Хорошая практика поддерживает открытие базы данных во время работы приложения?
Это личное предпочтение.
Я лично оставил его открытым все время и закрою его в каком-то жизненном цикле, таком как onStop()
или onDestroy()
. Таким образом, вы можете легко проверить, действительно ли база данных уже используется, вызывая isDbLockedByCurrentThread()
или isDbLockedByOtherThreads()
на одном объекте SQLiteDatabase каждый раз, прежде чем использовать его. Это предотвратит множественные манипуляции с базой данных и сохранит ваше приложение от потенциального сбоя, что возможно, если у вас случайно есть два открытых экземпляра в случае, когда вы открываете/закрываете для чтения/записи.
Имейте в виду, что ваше приложение может быть убито во время открытого подключения к базе данных.
Кроме того, вы должны использовать транзакции для уменьшения операций записи на диск за раз.
Имеет ли это значение?
База данных - это еще один файл на диске в конце дня. Если вы попытаетесь записать его из нескольких потоков/экземпляров одновременно, у вас возникнут проблемы.
. Я не согласен с тем, что соединение открыто все время, нет никаких оснований для этого. –
@StanR. Я сказал, что это то, что я лично сделал бы. Вы можете делать аргументы как для, так и против него. Я не говорю, что это единственный метод, которым вы должны следовать. –