(2)AIDL实现,同样还是进度条的UI更新。
public class AndroidAidlActivity extends Activity { /** Called when the activity is first created. */ public static final int MAX_PROGRESS = 100; /** * 进度条的进度值 */ private int progress = 0; public ProgressBar progressBar; private Button bindButton; private MyAIDLService mService; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.handler_layout); progressBar = (ProgressBar)this.findViewById(R.id.progress); bindButton = (Button)this.findViewById(R.id.bind); bindButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { bindService(); Log.d("","startDownLoad() --> click"); } }); this.findViewById(R.id.next).setVisibility(View.GONE); } private ICallBack.Stub mCallback = new ICallBack.Stub() { @Override public void showResult(final int result) { Log.d("", "showresult -->" + result); progressBar.setProgress(result); } }; private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { mService = null; } @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.d("","startDownLoad() --> onbind"); mService = MyAIDLService.Stub.asInterface(service); try { mService.registerCallback(mCallback); mService.startDownload(); } catch (RemoteException e) { Log.e("", "", e); } } }; @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { unBindService(); super.onPause(); } public void bindService(){ Intent bindIntent = new Intent(this, AidlService.class); bindService(bindIntent, connection, BIND_AUTO_CREATE); } public void unBindService(){ unbindService(connection); } @Override protected void onDestroy() { // Remove all Runnable and Message. super.onDestroy(); } } public class AidlService extends Service { private RemoteCallbackListmCallbacks = new RemoteCallbackList (); MyAIDLService.Stub mBinder = new Stub() { @Override public void registerCallback(ICallBack cb) throws RemoteException {