1

我有这个...

button = (Button) findViewById(R.id.start_repeating);
button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(Test.this, RepeatingAlarm.class);
        PendingIntent sender = PendingIntent.getBroadcast(Test.this, 0, intent, 0);
        long firstTime = SystemClock.elapsedRealtime();
        firstTime += 1 * 1000;
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 1 * 1000, sender);
        if (mToast != null) {
            mToast.cancel();
        }
        mToast = Toast.makeText(Test.this, "repeating_scheduled", Toast.LENGTH_LONG).show();
    }
});

button = (Button) findViewById(R.id.stop_repeating);
button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(Test.this, RepeatingAlarm.class);
        PendingIntent sender = PendingIntent.getBroadcast(Test.this, 0, intent, 0);
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
        am.cancel(sender);
        if (mToast != null) {
            mToast.cancel();
        }
        mToast = Toast.makeText(Test.this, "repeating_unscheduled", Toast.LENGTH_LONG).show();
    }
});

但它似乎无法正常工作......每次我尝试点击第二个按钮时,警报都不会取消......这是我正在使用的广播接收器......

public class RepeatingAlarm extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        for(int i=0;i<5;i++)
            Toast.makeText(context, "repeating_received " + i, Toast.LENGTH_SHORT).show();
    }
}

求大神告诉我怎么回事!!!谢谢!!

4

1 回答 1

2

如果您保存对待处理意图的引用,那么您可以使用AlarmManager.cancel().

传入你的待定意图,你就准备好了。

于 2013-05-09T18:23:59.063 回答