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

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

就是想。

提前谢谢了。

  • 在AsyncTask中捕获未处理的exception的devise模式
  • 我如何传递一个上下文到一个AsyncTask?
  • java.lang.ClassNotFoundException:由AdMob / Google Play服务引起的android.os.AsyncTask?
  • Android AsyncTask在取消时不会停止,为什么?
  • locking方向,直到Asynctask完成
  • AsyncTask“只有创build视图层次结构的原始线程才能触及其视图。”
  • 如何在Android上从服务器检索数据时滚动更新ListView?
  • 使用OKHttp,AsyncTask和OKhttpasynchronous请求中的同步请求有什么区别?
  • UI线程在应用程序的整个可见生命周期中都是可用的,这可能跨越多个活动的组合。

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

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


    更新

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

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

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