Если мое приложение будет уничтожено во время транзакции (т.е. в позиции 1 в исходном коде ниже), база данных будет заблокирована. Приложение было убито либо с помощью диспетчера задач, либо завершено из-за отладчика (я знаю, что диспетчер задач не должен использоваться, и я знаю, что это моя ошибка - завершение приложения на данном этапе ;-)) - но в любом случае это может произойти.
Если я попытаюсь перезапустить приложение, sqlite не сможет открыть базу данных, поскольку она заблокирована (даже после перезапуска устройства). В файловой системе есть файл базы данных и файл журнала. Как я могу восстановить базу данных и открыть ее снова?
final SQLiteDatabase db = mDb.getDb();
try {
db.beginTransaction();
//execute some updates (1)
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
В данный момент доступ к базе данных осуществляется только одним потоком, и существует только один экземпляр базы данных.