This Android application on Google использует следующий метод для обновления базы данных после замены файла базы данных с помощью резервного копирования:Сброс или обновления соединения с базой данных
public void resetDbConnection() {
this.cleanup();
this.db =
SQLiteDatabase.openDatabase(
"/data/data/com.totsp.bookworm/databases/bookworm.db",
null, SQLiteDatabase.OPEN_READWRITE);
}
Я не построил это приложение, и я не уверен, что происходит. Я стараюсь, чтобы эта идея работала в моем собственном приложении, но данные, как представляется, кэшируются представлениями, и приложение продолжает отображать данные из базы данных, которая была заменена, даже после того, как я вызываю cleanup() и повторно открываю базу данных , Я должен завершить и перезапустить активность, чтобы увидеть новые данные.
Я попытался позвонить недействительным на мой TabHost вид, который в значительной степени содержит все. Я думал, что взгляды будут перерисовываться и обновлять их базовые данные, но это также не имело ожидаемого результата.
Я закончил перезапуск программы программно, которая работает, но это, по-видимому, является резкой мерой. Есть ли способ лучше?
Возможно, вам придется запрашивать ваши курсоры и/или notifiydataset изменений. – Pentium10