我的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()。
关闭数据库的方法是什么,系统不会杀死我的应用程序?
非常感谢所有人!