cannot cancel the current alarm in Android

后端 未结 1 1650
一生所求
一生所求 2020-12-04 03:50

I am new to Android. Here, I am not getting any errors ,While debugging the stopAlarm() method debugger crossed all the lines but the AlarmReceiver is not get called .

相关标签:
1条回答
  • 2020-12-04 04:17

    The problem is here, in WakeUpScreen:

    alarmActivity.stopAlarm();
    

    You are calling the stopAlarm() method of the AlarmActivity() and in this case, AlarmActivity.this is null. I can only assume that you are doing somethng like this in WakeUpScreen:

    alarmActivity = new AlarmActivity();
    

    This is an absolute no-no! You cannot instantiate Android components (Activity, Service, BroadcastReceiver, Provider) using the keyword new. Only Android can create and initialize these components, because these components need to have their Context setup by the framework before they can be used.

    If you want to call a method in another Activity, then you need to ensure that that method is static. If you declare your stopAlarm() method as static, you will find that it complains about a few things (like AlarmActivity.this) which is why you will need to rewrite the method to take a Context parameter, something like this:

    public void stopAlarm(Context context) {
        Intent intent = new Intent(context, AlarmReceiver.class);
        PendingIntent alarmIntent = PendingIntent.getBroadcast(context, mAlarmId, intent, 0);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(this.ALARM_SERVICE);
        alarmManager.cancel(alarmIntent);
    }
    
    0 讨论(0)
提交回复
热议问题