Авто-перезапуск приложения после обновления маркета

Каждый раз, когда я публикую новую версию моего приложения в Маркете, если пользователь включил опцию "автообновление", приложение будет обновляться автоматически.

Приложение содержит сервис, который работает постоянно. Но когда происходит автоматическое обновление, старое работающее приложение уничтожается, а новое не запускается. Поскольку обновление происходит в основном прозрачно для пользователя, имеет смысл, что служба приложения должна автоматически запускаться после обновления, чтобы практически не прерывать работу службы.

Немного сложно проверить это с реальным обновлением с маркета, поэтому я использую следующие две команды adb для имитации этого процесса обновления. Установка 1-й версии:

adb install oldversion.apk

Автоматическое обновление:

adb install -r newversion.apk

После запуска второй команды приложение успешно обновляется, но оно было остановлено и не перезапущено.

Как мы можем заставить сервис новой версии запускаться автоматически?

3 ответа

Решение

Это то, что вам нужно тщательно протестировать, но вы должны быть в состоянии поймать его с помощью широковещательного приемника с действием Intent.ACTION_PACKAGED_REPLACED

Затем вы запускаете сервис с вашего получателя.

Если ваше приложение работает API 12 или выше, я бы рекомендовал зарегистрировать BroadcastReceiver слушать android.intent.action.MY_PACKAGE_REPLACED,

Это намерение срабатывает только в том случае, если ваше приложение получило обновление.

Зарегистрировать BroadcastReceiver в Intent.ACTION_PACKAGE_REPLACED

Затем сравните EXTRA_UID с вашим собственным. Если он совпадает, вы можете снова запустить свой сервис.

Другие вопросы по тегам