6

我是一名 iOS 开发人员,最近刚刚尝试了 Android 开发。

在 iOS 中,我在代码中使用完成处理程序。

我想知道在Android开发中是否有类似的东西?

谢谢

4

1 回答 1

4

如果您需要它来执行异步操作,请查看 AsyncTask - 这是您实现执行长操作的 doInBackground 和执行假定更新 UI 的代码的 onPostExecute 方法的类。

现在,如果您想将一些特殊代码传递给您的 AsyncTask 以在长时间操作后执行,您可以:

(1) 传递将由您的活动/片段实现的接口,例如:

 // Psedocode to reduce size!
 interface MyInterface {
   void doWork();
 };
 class MyAsyncTask extends AsyncTask<Void,Void,Void> {
   MyInterface oper;
   public MyAsyncTask(MyInterface op) { oper = op; }
   // ..
   public onPostExecute(Void res) {
     oper.doWork(); // you could pass results here
   }
 }
class MyActivity extends Activity implements MyInterface {
   public void doWork() {
     // ...
   }

   public void startWork() {
      // execute async on this
      new MyAsyncTask(this).execute();

      // or execute on anynomous interface implementation
      new MyAsyncTask(new MyInterface() {
         public void doWork() {
            //MyActivity.this.updateUI() ...
         }
      });
   }
};

(2) 使用本地广播接收器EventBus,但那些是更重量级的解决方案。

(3) 如果您的后台工作代码中已经有一些回调接口,那么您可以使用以下代码使其在 UI 线程上执行:

// This can be executed on back thread
new Handler(Looper.getMainLooper()).post(new Runnable() {
  @Override
  public void run() {
    // do work on UI
  }
});
于 2015-12-16T09:28:08.487 回答