#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:
Вы могли бы подключить диспетчера сигнализации в службу. Служба переднего плана используется для поддержания работоспособности нашего приложения, даже если пользователь покинул основное приложение. И тогда диспетчер сигнализации может вызвать код в классе широковещательного приемника