Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Обновление приложения и базы данных / 13 сообщений из 13, страница 1 из 1
12.02.2016, 09:58
    #39169269
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
Добрый день.
Есть опубликованное в google play приложение. Со временем появилась необходимость его обновить. Столкнулся с проблемой: закидываю в assets новую версию БД, запускаю приложение, но в эмуляторе всё равно находится старая версия БД. Полагаю, что если загрузить новое приложение в GP, ситуация у пользователей будет такая же.
Как правильно обновить приложение с новой БД?
...
Рейтинг: 0 / 0
12.02.2016, 10:01
    #39169271
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
...
Рейтинг: 0 / 0
02.03.2016, 14:33
    #39183779
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
Насколько я понял, нужно реализовать метод onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion). С newVersion всё понятно, зашиваем в код, передаём методу onUpgrade. А как быть с oldVersion? Если его вшить в код, то база будет постоянно обновляться.
Я вижу такой механизм:
п.1. Проверяем, (CASE WHEN oldVersion < newVersion THEN 'чего-то делаем' ELSE 'ничего не делаем' END)
п.2. oldVersion := newVersion
Тогда н.б. хранить oldVersion тоже в БД и при каждом апдейте, поле тоже апдейтить. Насколько правилен такой подход и есть ли ещё варианты реализации по-лучше? М.б. у андроида есть спец метод getCurrentDbVersion() ?
...
Рейтинг: 0 / 0
02.03.2016, 14:50
    #39183806
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
sanringoА как быть с oldVersion? Если его вшить в код, то база будет постоянно обновляться.
Все таки стоит читать ссылки-то...
Методы onCreate, onUpgrade дергаются андроидом при необходимости . Самому их вызывать нельзя.
...
Рейтинг: 0 / 0
02.03.2016, 14:55
    #39183815
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
А как он узнаёт что версия БД изменилась и откуда он берёт oldVersion, newVersion ?
...
Рейтинг: 0 / 0
02.03.2016, 15:01
    #39183825
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
sanringoА как он узнаёт что версия БД изменилась и откуда он берёт oldVersion, newVersion ?
Из конструктора. Остается лишь правильно записывать ходы, где и что меняется от версии к версии, запоминать их и воспроизводить. И тогда, если пользователь установит на первую версию сразу десятую, то хелпер воспроизведет шаги со второго по десятый.
...
Рейтинг: 0 / 0
02.03.2016, 15:16
    #39183855
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
sanringoА как он узнаёт что версия БД изменилась и откуда он берёт oldVersion, newVersion ?
из PRAGMA USER_VERSION
...
Рейтинг: 0 / 0
02.03.2016, 17:58
    #39184150
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
И как вывести PRAGMA и USER_VERSION ?
...
Рейтинг: 0 / 0
02.03.2016, 18:11
    #39184161
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
sanringoИ как вывести PRAGMA и USER_VERSION ?
в приложении тебе это не нужно, я поделился чисто в образовательных целях. ну или это нужно изредка для определения версии при наличии файла на руках. "PRAGMA user_version" это SQL команда
...
Рейтинг: 0 / 0
03.03.2016, 14:53
    #39185001
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
wadmanОстается лишь правильно записывать ходы, где и что меняется от версии к версии, запоминать их и воспроизводить

Не совсем подходит. Проще грохнуть старую, скопировать новую. Поэтому решил метод onUpgrade не трогать. Выбрал вариант хранить текущую версию в самой БД.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if(isDatabaseExist()){
            //Сверяем текущую версию базы и ту что в assets
            if (getCurrentDbVersion() < DB_VERSION){
                try {
                    copyDataBase();
                } catch (IOException e) {
                    throw new Error("Error copying database");
                }
            }
        }
...
Рейтинг: 0 / 0
03.03.2016, 14:59
    #39185010
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
sanringoНе совсем подходит. Проще грохнуть старую, скопировать новую.
можно и так, если условия позволяют

sanringoВыбрал вариант хранить текущую версию в самой БД.
да она и так там хранится, в USER_VERSION
...
Рейтинг: 0 / 0
03.03.2016, 18:02
    #39185279
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
Загрузил обновление. Теперь самому заходить на сайт или приложение автоматически само обновится. Есть ли принудительная команда, которая проверяет наличие обновления?
...
Рейтинг: 0 / 0
04.03.2016, 09:00
    #39185573
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление приложения и базы данных
sanringoЗагрузил обновление.
В маркет?
sanringoЕсть ли принудительная команда, которая проверяет наличие обновления?
Принудительный нет, но есть код, который проверяет в маркете версию. Только зачем это? Говорят, что по статистике более 90% пользователей андроид заходят в маркет каждый день. Это не считая тех, у кого обновления ставятся автоматом.

https://www.google.ru/search?q=android check version in market
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Обновление приложения и базы данных / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]