仅在应用关闭时运行异步任务

Posted

技术标签:

【中文标题】仅在应用关闭时运行异步任务【英文标题】:Run Async Task when app is closed only 【发布时间】:2016-02-24 06:29:19 【问题描述】:

我想在应用程序关闭时才运行异步任务。我尝试将它放在 onDestroy() 方法中,但它有时会被调用(例如当应用程序崩溃时)。我还尝试将它放在 onPause() 方法上,但它也会在用户尝试查看不同的应用程序时运行,而不是仅在应用程序关闭时运行。谢谢!

真诚的洛基

【问题讨论】:

***.com/questions/5593115/… 和 ***.com/questions/5747803/… 和 ***.com/questions/18827085/… 的重复项 尝试在onBackPressed() 上调用finish() 并检查onDestroy() 是否被调用? 使用服务在后台运行.. 我认为这会给你一个好主意developer.android.com/reference/android/os/AsyncTask.html 【参考方案1】:

您应该使用Thread 而不是AsyncTask,但如果您想使用AsyncTask,您需要执行以下操作:

    不要更新 AsyncTask 中的 UI,因为 onDestroy 会删除该活动的资源和上下文。如果您尝试更新它们,它将崩溃。

    在创建AsyncTask时使用应用程序Context而不是活动Context,因为活动Context在活动销毁后无效。

【讨论】:

以上是关于仅在应用关闭时运行异步任务的主要内容,如果未能解决你的问题,请参考以下文章

关闭应用程序时异步任务不起作用

如果结果已经可用,则仅在单击按钮时启动异步任务并执行操作,否则等待结果然后执行操作

在 JMS 队列侦听器 onMessage 方法中运行异步代码 [关闭]

对同步适配器、服务、加载程序、提供程序和异步任务感到困惑? [关闭]

在窗口关闭时停止异步操作

在异步任务运行时显示警报框并在任务完成时删除?