2015-12-02 6 views
1

Я зарегистрировал приемник в onCreate, но onReceive иногда вызывается, иногда нет.onReceive in BroadcastReceiver не вызван иногда

public class MyReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.v("receiver","get called"); 

    } 
} 

Вот как зарегистрировать приемник в OnCreate

PROCESS_RESPONSE = getBaseContext().getResources().getString(R.string.serviceResponse); 
IntentFilter filter = new IntentFilter(PROCESS_RESPONSE); 
filter.addCategory(Intent.CATEGORY_DEFAULT); 
receiver = new MyReceiver(); 
registerReceiver(receiver, filter); 

Вот как я посылаю эфир:

Intent broadcastIntent = new Intent(); 
PROCESS_RESPONSE=getBaseContext().getResources().getString(R.string.serviceResponse); 
broadcastIntent.setAction(PROCESS_RESPONSE); 
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT); 
sendBroadcast(broadcastIntent); 
+0

Код ссылки на то, как передается приемник (как вы посылаете сигнал приемнику?) –

+0

Как зарегистрировать приемник –

+0

Найдите причину, потому что данные, которые я отправляю, не дают трансляции – Mengli

ответ

0

Попробуйте это:

broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 

Причина, по которой иногда работает и не работает

потому что Android 3.0 представила меру безопасности контроля запуска, которая предотвращает запуск компонентов остановленных приложений с помощью намерения. Приложение считается находящимся в остановленном состоянии, если приложение было либо только установлено, либо не было ранее запущено, либо было вручную остановлено пользователем, используя диспетчер приложений на устройстве. Однако, чтобы обойти это, флаг может быть добавлен в намерение до его отправки, чтобы указать, что намерение должно быть разрешено запустить компонент остановленного приложения.

Quote source

Так что, когда вы пытаетесь новая установка (запуск из IDE) приложение рассматриваются в остановленном состоянии на некоторое время, а потом нет. Так что иногда это не работает, когда вы пытаетесь транслировать. Дайте мне знать, если это работает, и, конечно же, убедитесь, что вы зарегистрировали BroadcastReciever (я уверен, что у вас есть, если он работает, по крайней мере, некоторое время).

+0

Добавлено флаги и попробовали свежую установку, но onReceive по-прежнему не вызывается иногда. – Mengli

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