我想了解以下是否可能。我想要一个能够对数据库进行更改的活动和服务,一旦活动停止运行,服务是否仍能访问和更改数据库内容?
我知道服务在活动关闭后可以独立运行,但不确定数据库访问是否仍然能够继续?
我知道服务在活动关闭后可以独立运行,但不确定数据库访问是否仍然能够继续?
是的,你可以在Service中使用sqlite数据库,即使应用程序转到后台或者使用最近应用列表中的滑动关闭应用程序的功能进行杀死。
我创建了一个非常简单的演示demo。
它只是一个空表的数据库。我每10秒钟在Service中获取该表是否包含任何记录。即使应用程序在后台运行或者被杀死,它仍然会给我一个toast消息。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final Handler mHandler = new Handler();
mRunnable = new Runnable() {
@Override
public void run() {
MyDBHelper myDBHelper = new MyDBHelper(getApplicationContext());
boolean isInfoAvailable = myDBHelper.isAnyInfoAvailable(getApplicationContext());
Toast.makeText(getApplicationContext(), String.valueOf(isInfoAvailable), Toast.LENGTH_LONG).show();
mHandler.postDelayed(mRunnable, 10 * 1000);
}
};
mHandler.postDelayed(mRunnable, 10 * 1000);
return super.onStartCommand(intent, flags, startId);
}
您需要确保的是:
服务应在后台运行。
在您的清单文件中,为服务使用标志android:stopWithTask="false"
。
<service
android:name=".MyService"
android:enabled="true"
android:exported="true"
android:stopWithTask="false">
</service>
希望这能有所帮助。:)