android - 如何确保在android杀死进程之前保存数据

标签 android android-asynctask android-sqlite

在 Android 中,不在 UI-Thread 中执行任何数据库操作(或至少是复杂的操作)通常是一个好习惯。我有一个复杂形式的 Activity ,我想确保在 Activity 进入后台时保存所有数据(例如,用户按下主页按钮或打来电话)。在 Activity 的 onPause() 方法中,我可以启动一个将数据存储在数据库中的 AsyncTask,但我永远无法确定任务是否成功完成,因为 android 可以在任务完成之前终止进程,因为 Activity 和整个应用程序都在后台.

我可以在 onPause 方法中保存数据同步,但可能会遇到 ANR。
我知道 Android 会在 Activity 被终止后恢复 View ,但这仅在 View ID 唯一时才有效。我有很多以编程方式添加的 View ,在这些 View 中我无法确保 Id 的唯一性并且几乎不可能使用 saveInstanceState 功能,因为我必须保存非常复杂的模型。

是否有可能确保在 android 终止进程而不在 UI-Thread 中执行之前保存数据?

最佳答案

我曾经创建过一个应用程序,我也有类似的数据一致性问题。我在那里所做的是将数据对象的存储委托(delegate)给我为此目的创建的服务。尽管这会使您的 Activity 的启动/停止/初始化变得更加困难(一旦 Activity 再次启动,您将不得不等待服务完成其先前启动的保存操作),这是我唯一可以使用的“Android”方式想到要解决这个问题。

关于android - 如何确保在android杀死进程之前保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16438391/

相关文章:

安卓打开电话应用

Android检查应用程序是否关闭

java - 尝试上传图片但收到此错误 Android 应用程序

android - 如何更改默认的 SQLite 时区

java - Android SQLite 更新行不起作用

mp3 播放期间的 Android 均衡器

android - 使 EditText 失去焦点

java - 如何异步读取 JSON 并在 android 中使用其数据?

Android Looper.prepare() 和 AsyncTask

具有本地数据库和远程数据库的 Android 项目