警报管理器不会终止应用程序而不会停止警报

时间:2019-10-21 06:58:55

标签: android broadcastreceiver alarmmanager

许多人在我面前问了同样的问题,但我都没有回答。 我已经使用 AlarmManager BroadcastReciever 创建了一个警报应用程序。 alarmManager.cancel() 不能正常工作,并且警报会响起,直到该应用被杀死。

我使用相同的 Intent 和参数来设置和取消警报。 以下是设置警报的代码:

 public void startAlarm() {
            alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            intent=new Intent(this, AlarmReceiver.class);
            pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent,0);
            alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
    }

停止警报:

public void stopAlarm(){
   alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        intent=new Intent(this, AlarmReceiver.class);
        pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent,0);

            alarmManager.cancel(pendingIntent);

}

BroadcastReciever类:

public class AlarmReceiver extends BroadcastReceiver {
    MediaPlayer mediaPlayer;

    @Override
    public void onReceive(Context context, Intent intent) {

        mediaPlayer=MediaPlayer.create(context, Settings.System.DEFAULT_ALARM_ALERT_URI);
        mediaPlayer.start();

    }

}

注:如果在振铃之前停止警报,该代码将正常工作。  但是,一旦警报响起,便无法停止,直到应用终止。

2 个答案:

答案 0 :(得分:0)

尝试- alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),                   AlarmManager.INTERVAL_DAY,pendingIntent);

答案 1 :(得分:0)

使用此

  public void stopAlarm(){
   alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        intent=new Intent(this, AlarmReceiver.class);
        pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent,PendingIntent.FLAG_UPDATE_CURRENT);

            alarmManager.cancel(pendingIntent);

}