Jay*_*iyk 6 android handler android-handler android-handlerthread
我是一名 iOS 开发人员,最近刚尝试过 Android 开发。
在 iOS 中,我在我的代码中使用完成处理程序。
我想知道在Android开发中是否有等价物?
谢谢
如果您需要它来执行异步操作,请查看 AsyncTask - 这是一个类,您可以在其中实现 doInBackground(执行长操作)和 onPostExecute 方法(执行假设更新 UI 的代码)。
现在,如果您想将一些特殊代码传递给 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() ...
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
(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
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2717 次 |
| 最近记录: |