1

я до сих пор не понимаю, как Application (не активность) жизненный цикл,Приложения для Android OnCreate, когда она называется

Это довольно obvius, что OnCreate метод Application вызывается при запуске графического интерфейса.

Но, началось ли оно ЛЮБОЙ или ВСЕЙ из следующих случаев?

  • App Widget видна
  • Broadcast приемник получает что-то
  • уведомления Нажмите Прибыло к устройству и показать сообщение
  • уведомления Нажмите щёлкнуло после того, как приложение было закрыто
  • запускается
  • службы

И как долго процесс приложения будет сохранен в живых?

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

+0

Да всем. В основном выполняется код в вашем приложении. Он поддерживается до тех пор, пока система не решит его остановить, или вы убьете его из меню последних приложений. – njzk2

ответ

5

Но, началось ли оно ЛЮБОЙ или ВСЕЙ из следующих случаев?

Ваш Application экземпляр создается как часть запуска вашего процесса.

App Widget виден

Просто будучи видимым не имеет ничего общего с вашим приложением и его процессом. Ваше приложение и его процесс будут задействованы для заполнения виджета приложения, когда он будет создан и когда он будет обновлен. Если, например, updatePeriodMillis запускает обновления, а когда приходит время, у вас нет процесса, тогда в качестве части запуска процесса создается экземпляр Application, перед вызовом AppWidgetProvider с onUpdate().

Broadcast приемник получает что-то

Если процесс уже существует, ваш Application экземпляр уже существует. Если ваш процесс не существует, то экземпляр Application создается как часть запуска процесса, прежде чем BroadcastReceiver вызывается с onReceive().

уведомление Нажмите поступает на устройство и показать сообщение

Если вы имеете в виду GCM, так как это происходит в качестве вещания, см выше.

уведомление Нажмите нажата после того, как приложение было закрыто

Я понятия не имею, что вы имеете в виду под этим.

запущена служба

Если ваш код запуска службы, то ваш процесс уже был запущен, и вы уже Application. Если какой-либо другой процесс запускает вашу службу, и ваш процесс не запущен, то создается Application до Service как часть создания вашего процесса.

И как долго процесс применения будет сохранен в живых?

Если «процесс подачи заявки» означает «процесс», процесс будет примерно где-то между миллисекундой и тысячелетием, грубо говоря. Это будет продолжаться до тех пор, пока Android не прекратит ее освобождать оперативную память системы для других приложений, или пока что-то конкретно не избавится от нее (например, «убийца задачи», принудительный останов в настройках).

+0

Итак, другими словами, он всегда запускается всякий раз, когда что-то в моем коде выполняется? – htafoya

+0

@htafoya: Ваш процесс запускается, когда вам нужна какая-то форма IPC для процесса. Начало деятельности, запуск или привязка к услуге, отправка трансляции или работа с поставщиком - это четыре основных случая. Другие вещи - это уточнения одного из них (например, 'AppWidgetProvider' на самом деле является подклассом« BroadcastReceiver »). – CommonsWare

+0

'ваш процесс будет вокруг где-то между миллисекундой и тысячелетием'. Это очень забавный/позитивный способ мышления, мне нравится, как вы взяли немного больше, чем необходимый диапазон ... – Bonatti

3

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

Например:

  • Вы начинаете ваше приложение, когда он не работает (первый раз запустить его в сессии или запустить его после того, как силы, останавливая его)

  • Вы бросить любую деятельность для (он не сразу убит!), и Android решает закрыть ваше приложение, и вы его перезагрузите.

  • Вы помещаете приложение в фоновом режиме, загружаете Chrome, загружаете некоторые вещи, а затем Android решает, что ваше приложение должно погибнуть и убийство оно что (process com.example.acme.helloworld has died.) и само приложение убит вместе с каждой статической переменной, и ваше приложение воссозданы с нуля, но ваша деятельность нагрузки от деятельности Stack и onSaveInstanceState -расслоении

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

Смежные вопросы