2016-07-24 1 views
0

Мои графики приложений Сигнализация с использованием AlarmManager и класса BroadcastReceiver.Будет ли BroadcastReceivers запускаться, если приложение полностью отключено?

Это работает, если приложение работает или работает в фоновом режиме, но если он полностью убит, кажется, что событие не уволено.

Приемник вызывает IntentService, который вызывает API REST API с некоторыми параметрами, а затем отображает отформатированный вывод в уведомлении. Служба делает это без использования AsyncTask, поскольку это уже фоновый поток.

Также есть хороший способ проверить, вызван ли приемник или служба, если приложение не находится в Debug?

+0

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

+0

Это в манифесте. Я не уверен, какая часть ломается, чтобы быть честным, является ли это приемником, загрузкой данных, намеренным сервисом или логикой уведомлений. Он работает иногда, но иногда нет. Угадайте, нужно создать регистратор, который пишет в БД и посмотреть, какая логика действительно запущена. – allanx2000

ответ

2

Если ваш BroadcastReceiver должен получить намерения даже в случае, когда приложение будет убито, вы должны зарегистрироваться на нужные цели через AndroidManifest.xml.

Таким образом, BroadcastReceiver будет находиться в независимости от вашего жизненного цикла приложения.

Таким образом, ваш BroadcastReceiver будет уведомлен автоматически Android, как только желаемая цель транслировалась некоторым приложением

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest> 
    ... 

    <application> 
     .... 
     <receiver android:name=".MyCustomBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="com.example.mytestapp.MY_CUSTOM_INTENT" /> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

MyCustomBroadcastReceiver.java

public class MyCustomBroadcastReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(intent != null) { 
      String action = intent.getAction(); 
      if(action != null) { 
       if(action.equals("com.example.mytestapp.MY_CUSTOM_INTENT")) { 
        // DO YOUR STUFF 
       } 
      } 
     } 
    } 
} 

Создание Alarm Intent

Затем при создании управляющего сигнала, используйте код ниже:

Intent intentForAlarmManager = new Intent("com.example.mytestapp.MY_CUSTOM_INTENT"); 

PendingIntent.getBroadcast(/* CONTEXT */, /* ID */ , intentForAlarmManager, /* FLAGS */)); 

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

  • Нет связанных вопросов^_^