我有一堆 AsyncTasks 及其回调(监听器接口(interface)),我不想与 UI 线程有任何关系。
在这里阅读答案:Android : can AsyncTask return in another thread than UI thread? 我留下的印象是我只能从 UI 线程启动 AsyncTasks,这意味着我从它们的 onPostExecute 方法调用的回调也将在主线程中。
如何将所有这些逻辑从 UI 线程中移走?
最佳答案
首先,基于我之前在 IntentService 中尝试运行 AsyncTasks 时遇到的一些问题,我认为您不能从非 UI 线程运行 AsyncTask 的假设是错误的。
我发现从 UI 线程启动 AsyncTasks 的问题不是它们不运行或导致崩溃,而是 onPostExecute() 不会在其他东西完成后自动在主 UI 线程上运行.我不建议这样做,但如果您愿意,您可能可以这样做。
但 AsyncTasks 存在的全部原因基本上是有一种简单的方法来从 UI 线程运行一些代码,然后能够在它完成后更改 UI 内容。因此,如果您根本不想对 UI 线程执行任何操作,则根本不需要使用 AsyncTask。如果您不需要在 UI 线程上运行任何代码,您可以使用类似的东西:
new Thread(new Runnable() {
public void run() {
//Do your stuff
}
}).start();
关于android - 如何在主线程之外执行和接收来自 AsyncTasks 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30402152/