在 Android 中,在 UI-Thread 中不执行数据库操作(或至少是复杂的操作)通常是一个好习惯。我有一个复杂表单的活动,我想确保在活动进入后台时保存所有数据(例如,用户按下主页按钮或来电)。在活动的 onPause() 方法中,我可以启动一个 AsyncTask,它将数据存储在数据库中,但我永远无法确定任务是否成功完成,因为 android 可以在任务完成之前终止进程,因为活动和整个应用程序都在后台.
我可以在 onPause 方法中保存数据同步,但随后可能会运行到 ANR。
我知道 Android 会在 Activity 被终止后恢复视图,但这仅在 View Id 唯一时才有效。我有很多以编程方式添加的视图,我无法确保 Id 的唯一性,并且几乎不可能使用 saveInstanceState 功能,因为我必须保存非常复杂的模型。
是否有可能确保在android杀死进程而不在UI线程中执行它之前保存数据?