使用Android中的服务中的SQLite数据库

时间:2015-02-03 06:27:03

标签: android sqlite android-service

我想知道以下是否可行。我希望有一个活动和服务都对数据库进行更改,一旦活动停止运行,服务是否仍然能够访问和更改数据库的内容?

我知道服务一旦关闭就可以独立于活动运行,但不确定数据库访问是否仍然可以继续?

2 个答案:

答案 0 :(得分:9)

是的,你可以在你的服务中使用sqlite数据库,即使应用程序转到后台,或者使用从最近的应用程序列表中滑动来杀死应用程序。

我创建了一个非常简单的demo

它只是一个带有空表的数据库。而且我每隔10秒就会收到一个表是否包含任何记录。即使应用程序在后台,它也会给我吐司消息,或者它被杀死。

@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>

希望这会有所帮助。 :)

答案 1 :(得分:0)

完全可以让您的服务访问数据库 - 尝试查看How to use SQLite from Services in Android?