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

Wih*_*rie 4 sqlite android android-service

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

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

Mys*_*icϡ 11

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

我创建了一个非常简单的演示.

它只是一个带有空表的数据库.而且我每隔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);
}
Run Code Online (Sandbox Code Playgroud)

您需要确保的是:

服务应该在后台运行.

在清单文件中,使用flag android:stopWithTask="false"作为服务.

<service
    android:name=".MyService"
    android:enabled="true"
    android:exported="true"
    android:stopWithTask="false">
</service>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.:)


doy*_*doy 1

完全有可能让您的服务访问数据库 - 尝试查看如何在 Android 中的服务中使用 SQLite?