Android:在卸载卡之前关闭数据库

时间:2013-02-14 23:23:06

标签: android android-sdcard unmount

我的Android应用中存在以下问题。 假设我有使用SQLite DB的运行服务。并且用户决定卸载位于数据库文件上的SD卡(连接到USB或手动)。 我收到广播接收者的通知意图:

    IntentFilter MIF = new IntentFilter(Intent.ACTION_MEDIA_REMOVED);
    MIF.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
    MIF.addAction(Intent.ACTION_MEDIA_EJECT);
    MIF.addDataScheme("file");
    registerReceiver(MediaReceiver,MIF);

所以我能够检测到卡片卸载。在这个接收器的onReceive块中,我明确地在我用于查询的对象上调用database.close()。 但我的应用程序正在崩溃。不写它停止工作,只是切换到主屏幕,仅此而已。

    02-14 23:23:30.586: E/ProcessKiller(127): Process cz.cuni.mff.drozi.Metro (27598) has open file /mnt/secure/staging/Android/data/cz.cuni.mff.drozi.Metro/files/database.db
    02-14 23:23:31.826: E/ProcessKiller(127): Process cz.cuni.mff.drozi.Metro (27598) has open file /mnt/secure/staging/Android/data/cz.cuni.mff.drozi.Metro/files/database.db
    02-14 23:23:33.056: E/ProcessKiller(127): Process cz.cuni.mff.drozi.Metro (27598) has open file /mnt/secure/staging/Android/data/cz.cuni.mff.drozi.Metro/files/database.db
    02-14 23:23:34.276: E/ProcessKiller(127): Process cz.cuni.mff.drozi.Metro (27598) has open file /mnt/secure/staging/Android/data/cz.cuni.mff.drozi.Metro/files/database.db
    02-14 23:23:35.496: E/ProcessKiller(127): Process cz.cuni.mff.drozi.Metro (27598) has open file /mnt/secure/staging/Android/data/cz.cuni.mff.drozi.Metro/files/database.db
     02-14 23:23:36.706: E/ProcessKiller(127): Process cz.cuni.mff.drozi.Metro (27598) has open file /mnt/secure/staging/Android/data/cz.cuni.mff.drozi.Metro/files/database.db

以应用程序崩溃结束。但我很确定我在数据库上明确调用了close()。

关闭数据库的方法是什么,系统不会杀死我的应用程序?

非常感谢所有人!

0 个答案:

没有答案