gpt4 book ai didi

android - AsyncTask.execute() 在调用 onDestroy 后运行回调

转载 作者:搜寻专家 更新时间:2023-11-01 07:50:14 24 4
gpt4 key购买 nike

我正在将 onPause 方法上的数据保存到 SQLite 数据库。

  • 我调用 myObject.saveEntry(data)
  • 它通过调用AsyncTask.execute(new Runnable(){})来保存数据
  • 一旦数据被保存,回调方法savedSuccess(message)被调用
  • Activity 方法 showMessage(message) 被调用
  • 出现一个toast表示数据保存成功

我的疑问是如何处理方向变化。当方向改变时,

  • onPause 被调用,saveEntry 方法被调用。
  • 之后 onDestroy 被调用
  • 再次创建 Activity 的新实例
  • 现在执行 savedSuccess(message) 方法回调(这是从 Activity 的前一个实例调用的)
  • showMessage(message) 被调用并显示 toast

我的问题是

  1. 我应该停止 AsyncTaskonDestroy 方法中执行
  2. 如果不是,在数据库保存/更新/删除完成之前Activity被销毁,我该如何处理?

最佳答案

Activity 中的 AsyncTask 可能不是运行后台任务的最佳解决方案,因为它持有对 Activity 的引用,该 Activity 现在已被销毁。

您可以考虑使用带有 setRetainInstance(true) 的 fragment 来使用 AsyncTask 或 IntentService 进行后台工作。

参见 here了解如何使用任务 fragment 来完成后台工作。

关于android - AsyncTask.execute() 在调用 onDestroy 后运行回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com