Android: закрытие базы данных перед размонтированием карты
У меня есть следующая проблема в моем приложении для 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 () для базы данных.
Как закрыть базу данных, чтобы система не убивала мое приложение?
Большое спасибо за все!