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 () для базы данных.

Как закрыть базу данных, чтобы система не убивала мое приложение?

Большое спасибо за все!

0 ответов

Другие вопросы по тегам