Управление соединениями SQLite в Android
У меня (надеюсь) быстрый вопрос относительно обработки соединений с базой данных SQLite в Android. У меня есть приложение, которое состоит, естественно, из нескольких видов деятельности. У меня нет проблем с созданием / обновлением / запросом базы данных, так как я создал отдельный выделенный класс для обработки этой работы через SQLiteOpenHelper и т. Д.
Мой вопрос заключается в следующем: поскольку все эти действия совместно используют одну и ту же базу данных, это обычно реализуется как один статический член, или каждое действие должно иметь свое собственное соединение? Конечно, меня беспокоит стоимость повторного подключения к базе данных в каждом действии.
Или, другими словами, есть ли причина не хранить только один экземпляр?
Мне также интересно, если что-то происходит за кулисами, например, пул соединений.NET, чтобы снизить стоимость открытия соединений.
Заранее спасибо!
2 ответа
Открытие соединения в SQLite составляет около 0,2 мс.
Лучшая практика подсказывает нам открывать и закрывать соединение каждый раз, когда оно нам нужно.
Просто используйте SQLiteOpenHelper.getReadableDatabase() и SQLiteOpenHelper.getWriteableDatabase () - Android будет управлять и кэшировать соединение, поэтому вам это не нужно.
Фактически, обратитесь к официальной документации Google Using Databases:
Для записи и чтения из базы данных вызовите getWritableDatabase() и getReadableDatabase(), соответственно. Они оба возвращают базу данных SQLiteDatabase