Было несколько случаев, когда пользователь просто теряет все данные приложения. Таких ситуаций очень мало, но все они (было штук 10/50 000, не больше) случались после обновления. При этом в обновлениях не было никаких манипуляций с БД, в основном: добавление языков, сортировка списков, анимация и т.д.
Никак не могу понять, какие могут быть причины всему этому.
Возможно кто то сталкивался с такой или подобной проблемой. Опишите причины и/или методы их решения.
Проблема: пользователь нажал кнопку "очистить данные" в настройках приложением
Решение: Проверять наличие данных и загружать их (как загружать зависит от вашего способа предоставления данных)
Спасибо. Такое конечно может быть, но часто пользователи говорят что они просто обновились и ничего не трогали. То есть мне интересна ситуация когда пользователь не виноват
Есть. Но текущая версия базы, всего лишь 2. Хотя ваше сообщение навело меня на мысль о том, может ли быть багом ситуация, когда я не проверяю номер старой и новой версии, считая, что так, как oldVersion == 1 а newVersion == 2 то нет смысла проверять?
вы про upgrade? если версии всего 2, то upgrade будет лишь в одном случае как вы и описали "oldVersion == 1 а newVersion == 2", в случае если база создается сразу на версии 2, то onUpgrade не будет выполнятся. В любом случае если у вас этим проблема то надо копать туда. + смотреть по коду, может вы сам где то их затираете. А вообще по опыту понял что от андроида можно ожидать что угодно, даже в новых версиях.
Да. Версия всего 2, поэтому я и не делаю проверку, а в onCreate() как раз создаю сразу БД версии 2. Этот код работает уже более 6 месяцев, думаю, что тут скорее всего нет проблем.
Могу сказать по своему опыту, что самое надежное решение реализации синглитонов в андроиде это в Application#onCreate делать SingletonDbHelper.init (для иницилизации инстанса), а в коде делать SingletonDbHelper.getInstance() . К сожалению больше ни чего не могу подсказать по вашей проблеме.