我有一堆AsyncTasks及其回调(监听器接口),我不想与UI线程有任何关系。
在这里阅读答案:Android : can AsyncTask return in another thread than UI thread? 我留下了印象,我只能从UI线程启动AsyncTasks,这意味着我从他们的onPostExecute方法调用的回调也将在主线程中。
如何将所有这些逻辑从UI线程中移开?
答案 0 :(得分:3)
首先,基于我在尝试在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();