После прочтения некоторых вопросов/ответов о жизненном цикле активности и процесса. Полагаю, я понимаю подробности о жизненном цикле деятельности и процесса. Но я смущен этим наблюдателям, как BroadcastReceiver/ContentObserver, с жизненным циклом процесса.
Я хочу знать, когда я регистрирую BroadcastReciver (т.е. BroadcastReceiver прослушивает намерение получать SMS), если процесс, который зарегистрировал BroadcastReceiver, уже существует, когда система вызывает BroadcastReceiver,
Спасибо.
1.) Не уверен, что вы подразумеваете под "процессом, который зарегистрировал BroadcastReceiver". Если вы предоставите именованный процесс для своего BroadcastRecevier(), он будет создан в процессе, чье имя приходит из вашего пакета приложений плюс атрибут name (XYZ). Если процесс с таким именем уже существует, то новый процесс не будет создан, и ваш BroadcastReceiver будет создан в существующем процессе.
2.) Итак, если процесс все еще находится в памяти, то вы правы, что могут быть уже инициализированы статические данные.
3.) Правильно, любые статические данные должны быть повторно инициализированы в этом случае.
4.) Если процесс BroadcastReceiver еще не существует, тогда процесс будет создан, но BroadcastReceiver будет единственным, что создано в этом процессе. Никакие действия не будут начаты.
Единственное, что делает Activity "основной" деятельностью, заключается в том, что она зарегистрирована для обработки определенного вида намерения с действием android.intent.action.MAIN. Это тип намерения, который транслируется при запуске приложения. Пользователь может переключиться на уже запущенное приложение, и никакая "основная" активность не входит в игру как намерение с действием MAIN, в этом случае не транслируется. Дело в том, что в "основной" Деятельности нет особой связи с процессом, в котором он работает. Он имеет только особые отношения с определенным видом намерения.
BroadcastReceivers
и ContentObservers
довольно разные.
1.) Да, в общем, все, что вы делаете, находится в том же процессе, если особо не определено.
2.) Этот вопрос не имеет смысла. Что вы спрашиваете?
3.) Опять же, нет смысла. Какие статические данные?
4.) Нет. Широковещательные приемники полностью отличаются от действий. Единственное, что называется, когда широковещательный приемник получает широковещательную передачу, - это метод onReceive()
.