2015-12-16 94 views
4

我是刚刚尝试Android开发的iOS开发人员。完成Android中的处理程序

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

我想知道在Android开发中是否有相当于它的东西?

谢谢

+1

的可能的复制(HTTP ://stackoverflow.com/questions/22077960/completion-handlers-in-java) – yennsarah

回答

2

如果你需要做的异步操作,那么考虑的AsyncTask - 这就是你在执行你的长期运行和在执行onPostExecute方法是假设更新UI代码实现doInBackground类。

现在,如果你想通过一些特殊的代码添加到您的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)使用local broadcast receivers,EventBus,但这些是更重的解决方案。

(3)如果你已经有一定的回调接口在你backgroung工人代码,那么你可以把它使用此代码在UI线程中执行:?在Java中完成处理]

// This can be executed on back thread 
new Handler(Looper.getMainLooper()).post(new Runnable() { 
    @Override 
    public void run() { 
    // do work on UI 
    } 
});