Авто-перезапуск приложения после обновления маркета
Каждый раз, когда я публикую новую версию моего приложения в Маркете, если пользователь включил опцию "автообновление", приложение будет обновляться автоматически.
Приложение содержит сервис, который работает постоянно. Но когда происходит автоматическое обновление, старое работающее приложение уничтожается, а новое не запускается. Поскольку обновление происходит в основном прозрачно для пользователя, имеет смысл, что служба приложения должна автоматически запускаться после обновления, чтобы практически не прерывать работу службы.
Немного сложно проверить это с реальным обновлением с маркета, поэтому я использую следующие две команды 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
с вашим собственным. Если он совпадает, вы можете снова запустить свой сервис.