gpt4 book ai didi

android - Android 中的完成处理程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:13 25 4
gpt4 key购买 nike

我是一名 iOS 开发者,最近刚尝试过 Android 开发。

在 iOS 中,我在代码中使用 Completion Handlers。

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

谢谢

最佳答案

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

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

(1) 传递一个将由您的 Activity/fragment 实现的接口(interface),例如:

 // 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) 如果您的背景工作代码中已经有一些回调接口(interface),那么您可以使用以下代码使其在 UI 线程上执行:

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

关于android - Android 中的完成处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34307775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com