3

Activity我想在暂停时保存一些数据。我正在使用我自己的ContentProvider支持 SQLite 数据库。

假设执行实际保存的方法如下所示:

public void saveData() {
    //perform operations over ContentProvider in current thread
}

问题是onPause:在(使用新线程)中调用这个方法是否安全?

public void onPause() {
    super.onPause();

    new Thread(new Runnable() {

        public void run() {
            saveData();
        }
    }).start();
}

或者我应该开始一个新Service的,将在后台完成这项工作?或者也许有更可靠的方法来确保数据被保存?

4

2 回答 2

1

您可以尝试使用绑定的后台服务(最好将 Content Provider 包装为一个)。这将使其独立于 Activity 状态,只需随时向您的 Provider Service 发布获取/保存请求即可。

于 2013-02-25T14:00:51.757 回答
0

这是安全的,但我建议不要为此目的使用 onPause() 。它调用得太频繁了(请参阅活动生命周期文档)。将其移至 onStop()。

于 2013-02-25T13:44:50.730 回答