Будет ли MainApplication всегда запускаться после обновления приложения, даже если пользователь его не открывает? - PullRequest
0 голосов
/ 19 сентября 2018

В моем приложении есть несколько виджетов, которые в новой версии приложения требуют дополнительных данных.Я получаю эти данные в MainApplication.java, но меня беспокоит, что когда пользователи обновляются, MainApplication не будет запускаться автоматически, если они не откроют приложение вручную.Однако, поскольку виджеты уже будут на домашнем экране, и поскольку эти данные будут недоступны, виджеты потерпят крах.

Реальны ли мои страхи или MainApplication ВСЕГДА будет выполняться первым (также до вызова AppWidgetProvider.onUpdate()), даже после того, как приложение автоматически обновится, а пользователь его вообще не сделает?

1 Ответ

0 голосов
/ 19 сентября 2018

Когда ваше приложение запускается, конструктор вашей Application реализации вызывается первым, а метод Application::onCreate() вызывается сразу после.Я предполагаю, что это то, что вы спрашиваете, когда говорите: «Будет ли MainApplication всегда запускаться первым?».Посмотрите, что документы говорят о Application::onCreate() (взято из здесь ):

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

Кроме того, этот метод не будет вызываться при обновлении вашего приложения, и, насколько я знаю, он не будет вызываться при завершении обновления вашего приложения..

С другой стороны, метод AppWidgetProvider.onUpdate() вызывается после переустановки приложения.Код для обновления ваших виджетов должен быть размещен внутри него, поэтому он будет выполняться после обновления вашего приложения.

public class WidgetProvider extends AppWidgetProvider {

    @Override
    public void onUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        //Update your widgets here
    }
}
...