2014-02-08 4 views
2

Я создал широковещательный приемник для управления этими событиями (ACTION_SCREEN_ON, ACTION_SCREEN_OFF и ACTION_USER_PRESENT). Я зарегистрировал свой вещательный приемник, как это в моей основной деятельностиТрансляционный приемник не получает после того, как приложение было убито

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
filter.addAction(Intent.ACTION_SCREEN_OFF); 
filter.addAction(Intent.ACTION_USER_PRESENT); 

mReceiver = new UnlockReceiver(); 


registerReceiver(mReceiver, filter); 

Моя проблема заключается в том, что UnlockReceiver не получает после того, как мое приложение будет убит (когда я Swype его от выбора приложения). У меня есть эта проблема, потому что эти трансляции не могут быть объявлены в Manifest. Я попытался решить эту проблему с помощью службы и AlarmManager. Как я могу это решить?

+0

См. Ответ Commons Ware для http://stackoverflow.com/questions/10398053/android-stop-broadcast-receiver-being-killed-with-service – coderplus

+0

«Моя проблема в том, что UnlockReceiver не получает после моего приложения (когда я swype его из селектора приложений) "- это потому, что ваш процесс завершен, и поэтому ваши приемники больше не существуют. «Как я могу это решить?» - что нужно решить? Выбрав приложение из списка недавних задач, пользователь указал, что пользователь не хочет, чтобы ваше приложение запускалось. – CommonsWare

+0

Я хочу, чтобы мой ресивер всегда выполнялся, когда SCREEN_OF, SCREEN_ON или USER_ACTION произошли, как если бы эти broacast были объявлены в Manefiest – aloj

ответ

0

Начиная с Android 3.1, диспетчер пакетов системы отслеживает приложения, находящиеся в состоянии остановки, и предоставляет средства для управления их запуском из фоновых процессов и других приложений.

Обратите внимание, что состояние остановки приложения не совпадает с состоянием прекращения действия. Система управляет этими двумя остановленными состояниями отдельно.

Платформа определяет два новых флажка намерения, которые позволяют отправителю указать, разрешено ли Intent активировать компоненты в остановленном приложении.

FLAG_INCLUDE_STOPPED_PACKAGES - Включить фильтры намерения остановленных приложений в список потенциальных целей для разрешения. FLAG_EXCLUDE_STOPPED_PACKAGES - исключить фильтры намерения остановленных приложений из списка потенциальных целей. Если ни один из этих флагов не определен в намерении, поведение по умолчанию заключается в включении фильтров остановленных приложений в список потенциальных целей.

https://developer.android.com/about/versions/android-3.1.html

0

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

Объявление статически в манифесте будет работать, но это не ваш случай.

У меня есть workground, и это до вас, чтобы решить, использовать его или нет:

Используйте липкий сервис, который работает всегда в фоновом режиме, и зарегистрировать свой вещательный приемник в службе.

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