如何检查AlarmManager是否已经工作?

时间:2016-11-07 00:17:38

标签: android alarmmanager android-alarms

这个qustion已经被问了很多,我尝试了很多答案而且没有用,所以这是最常见的一个

public void onClick(View v) {
            boolean alarmUp = (PendingIntent.getBroadcast(MainActivity.this ,0,
                    new Intent(MainActivity.this,Notifications.class),
                    PendingIntent.FLAG_NO_CREATE) != null);

            if (alarmUp)
            {
                 am.cancel(pend);
                Intent alarmIntent = new Intent(MainActivity.this,Notifications.class);
                final PendingIntent pendingIntent =
                        PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent,
                                PendingIntent.FLAG_NO_CREATE);
                if (pendingIntent != null) {
                    pendingIntent.cancel();
                }
                Toast.makeText(MainActivity.this,"Tweak cleared", Toast.LENGTH_LONG).show();
            }
            else {
                Toast.makeText(MainActivity.this,"There is no Tweak!", Toast.LENGTH_LONG).show();
            }

这个按钮在我的MainActivity中,每次按下我想检查是否有闹钟或者没有,如果有取消闹钟" am"和烤面包按摩..现在应用程序总是在其他声明中提供按摩"没有Tweak!"即使有闹钟......我在android中初学者所以会很感激任何帮助..谢谢。

修改

这是我的MainActivity中的另一个启动闹钟的按钮

start.setOnClickListener(new View.OnClickListener() {
        @Override

public void onClick(View v) {
            intent = new Intent(getApplicationContext(), Notifications.class);
            pend = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            am = (AlarmManager) getSystemService(ALARM_SERVICE);
 am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pend);

在我按下另一个取消它之前按此按钮。

修改

这是我检查警报并取消它的其他尝试..但是当我关闭应用程序并再次打开时它会告诉我没有警报"没有调整!"即使有一个

cancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (am != null && pend != null) {
                am.cancel(pend);
                pend = null;
                Toast.makeText(MainActivity.this,"Tweak cleared", Toast.LENGTH_LONG).show();
            }

          else {
                Toast.makeText(MainActivity.this,"There is no Tweak!", Toast.LENGTH_LONG).show();
            }

        }

    });   

pend和am是prviate变量,它们在" start"中初始化。按钮

由于

2 个答案:

答案 0 :(得分:0)

因为您正在使用标志“PendingIntent.FLAG_NO_CREATE”,它表示如果描述的PendingIntent尚不存在,则只返回null而不是创建它。

从您的代码开始,您之前从未创建过PendingIntent,因此它将始终返回null。

答案 1 :(得分:0)

private AlarmManager mAlarmMgr;
private PendingIntent mPendingIntent;

if (mAlarmMgr != null && mPendingIntent != null) {
    mAlarmMgr.cancel(mPendingIntent);
    mPendingIntent = null;
    Log.v("alarm", "done");
} else {
    Log.v("alarm", "no PendingIntent instance to cancel");
}

你是如何取消闹钟的。