从BroadcastReceiver停止重复警报 - 是否可能?

时间:2014-06-19 13:08:35

标签: android android-alarms android-broadcast

我有AlarmManager设置重复警报以便定期查询服务器。

    private AlarmManager alarmManager; 
    private PendingIntent pendingIntent;
    alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);

    Intent photosIntent = new Intent(this,AlarmReceiver.class);

    //startService(photosIntent);
    pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),0,photosIntent,0);


    alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
            SystemClock.elapsedRealtime(),
            10000, pendingIntent);

我在AlarmReceiver的onReceive()方法中启动了一个IntentService。 AlarmReceiver是一个BroadcastReceiver。这是onReceive()方法:

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

            Intent photosIntent = new Intent(context,JSONPhotosParser.class);
            context.startService(photosIntent);

}

现在,这是我想做的事情,因为它不太实际。我有什么方法可以在AlarmManager内阻止我的BroadcastReceiver。我还可以想到需要采取这种行动的实际情况。假设我使用ConnectivityManager查询网络连接的状态,如果存在连接,我将启动查询服务器的IntentService(这是我当前的情况)。如果网络状态返回false,我想停止AlarmManager设置的重复闹钟。

这在BroadcastReceiver中是否可行?我知道可以使用cancel(PendingIntent operation)删除AlarmManager。但是如何在BroadcastReceiver中创建PendingIntent?

对此的任何帮助都将非常感激。来自Android菜鸟。

1 个答案:

答案 0 :(得分:0)