如何正确停止Android Alarmmanager

时间:2015-01-26 02:37:34

标签: java android android-intent android-pendingintent android-alarms

我有一个定期触发的警报管理器。 activity_main中的按钮会触发它。

工作正常。没有任何问题。报警管理器在Main类中定义。 方法(在按钮单击时激活)调用警报管理器。另一种方法应该停止或取消它。

代码:

     public class MainActivity extends Activity {
    private PendingIntent pi;
       private AlarmManager alarmManager;

    .......................................
    ......................

    public void activate(View view) {
    //this activates the alarm manager.

    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pi.getBroadcast(this, 1, i, pi.FLAG_UPDATE_CURRENT));
    }

    public void deactivate(View view) {
//this should Deactivate the alarm manager.

    alarmManager.cancel(pi);

    }

    }

然而,第二种方法不起作用。 (停用)。

单击第二个按钮时,应用程序将崩溃!!

Log cat的原因如下:

Caused by: java.lang.NullPointerException.

有关如何解决此问题的任何想法? 我应该在第二种方法中再次创建一个意图吗?我尝试了但没有用.. 对此有何建议或解决方法?

1 个答案:

答案 0 :(得分:0)

对于有类似问题的人......

必须在用于停用AlarmManager的方法中再次初始化AlarmManager。还需要创建待定意图。

此外,请确保创建用于激活或设置重复警报的相同待处理意图(名称和属性)。然后,取消它。 @joey chong的所有学分

希望有所帮助......