onPostExecute()的“在UI线程上运行”是什么意思?

考虑一个在Activity中启动的AsyncTask。 如果活动暂停或销毁,会发生什么情况? 请问onPostExecute()运行? 如果是,将使用什么UI线程?

就是想。

提前谢谢了。

Solutions Collecting From Web of "onPostExecute()的“在UI线程上运行”是什么意思?"

UI线程在应用程序的整个可见生命周期中都是可用的,这可能跨越多个活动的组合。

您在视图中更改的任何东西都必须在UI线程上执行,并且AsyncTask的 onPostExecute通过在UI线程中执行指令来反映相同的逻辑。

你可以在你自己的Thread使用runOnUiThread来改变视图。 但是由于AsyncTaskonPostExecute方法(它也在UI线程上运行),所以你不需要在那里使用runOnUiThread


更新

关于你的问题:是的,即使你的activity被销毁, onPostExecute仍然会被调用(因为它被一个单独的线程调用),并且如果该方法会操作Views,那么你会得到强制closures错误,因为对你的活动的引用不可用了。

它会在onPostExecute()崩溃,因为UI线程就像一个进程对话框。 它发生在我身上,在我的Asynctask完成之前,我的Activity被摧毁。 它说“窗口泄漏…..”所以,我删除onPostExecute() 。 没有更多的崩溃..

记得调用cancel函数在onPause或onDestroyed中无效。