我希望在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
,它将在后台完成这项工作?或者可能有更可靠的方法来确保数据被保存?
答案 0 :(得分:1)
您可以尝试使用绑定的后台服务(更好的方法是将Content Provider包装一个)。这将使其独立于活动状态,只需随时向您的提供商服务发送获取/保存请求。
答案 1 :(得分:0)
这是安全的,但我建议不要为此目的使用onPause()。它经常调用(参见活动生命周期文档)。将其移至onStop()。