Проблемы с Android alarm manager, когда приложение закрыто

#java #android #broadcastreceiver #alarmmanager

Вопрос:

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

Я сделал следующие шаги:

AndroidManifest.xml

 <receiver android:name="MyBroadcastReceiver" ></receiver>
 

MainActivity.java

В методе OnClick кнопки я вызываю

 startAlert( x*60*1000);
 

x-видимая переменная для всего класса

 public void startAlert(long timeInMillis){ 
    Intent intent = new Intent(this, MyBroadcastReceiver.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() (timeInMillis),pendingIntent);
    }
    Toast.makeText(this, "Alarm in "   x   " Minuten",Toast.LENGTH_LONG).show();
}
 

MyBroacastReciever.java

 public void onReceive(Context context, Intent intent) {
     MediaPlayer player = MediaPlayer.create(context,MainActivity.link); 
                                         player.start();
     Toast.makeText(context, "Alarm....", Toast.LENGTH_LONG).show();}
 

Что я должен сделать, чтобы alarmManager успешно запустить приложение после закрытия?

Ответ №1:

Вы могли бы подключить диспетчера сигнализации в службу. Служба переднего плана используется для поддержания работоспособности нашего приложения, даже если пользователь покинул основное приложение. И тогда диспетчер сигнализации может вызвать код в классе широковещательного приемника