我正在跳槽(好吧,并不是那么复杂),以避免两次发出警报。基本代码如下:
AlarmManager mgr=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(this, MyService.class);
PendingIntent pi=PendingIntent.getService(this, 0, i, 0);
mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi);
每次我的应用程序启动时,我是否真的会运行此代码是否重要?我称之为大约10次作为过度杀伤实验,我没有看到任何不良影响,但我找不到任何关于这是否是巧合或预期行为的参考。
如果不是特别期待的话,感觉“错了”。如果AlarmManager
的行为发生变化,可能会让我后来遇到麻烦。
答案 0 :(得分:13)
由于AlarmManager的cancel方法没有“类似”意图取消警报,我们可以说平台会识别给定类名的意图。因此,重复调用它应该不是问题,因为平台将知道对于这样的未决意图已经存在警报。
这是一个类似的post。