我有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菜鸟。
答案 0 :(得分:0)
参考此链接:
AlarmManager.cancel(PendingIntent操作)