我是最近刚尝试过
Android开发的iOS开发人员.
在iOS中,我在代码中使用了完成处理程序.
我想知道在Android开发中是否有相同的东西?
谢谢
最佳答案 如果您需要它来执行异步操作,那么请查看AsyncTask – 这是一个实现执行长操作的doInBackground的类,以及执行更新UI的代码的onPostExecute方法.
现在,如果您想要在长时间操作后将一些特殊代码传递给AsyncTask,您可以:
(1)传递一个由Activity / fragment实现的接口,例如:
// 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线程上执行它:
// This can be executed on back thread
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// do work on UI
}
});