Java 设置和删除警报,同时避免新的意图
我正在设置闹钟Java 设置和删除警报,同时避免新的意图,java,android,android-intent,android-pendingintent,Java,Android,Android Intent,Android Pendingintent,我正在设置闹钟 Bundle Resids = new Bundle(); Resids.putInt("ResID",ResID); Resids.putLong("Time",Time); intent.putExtras(Resids); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, (int)Time, intent, Pe
Bundle Resids = new Bundle();
Resids.putInt("ResID",ResID);
Resids.putLong("Time",Time);
intent.putExtras(Resids);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, (int)Time, intent, PendingIntent.FLAG_ONE_SHOT);
alarmMgr.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, Time, pendingIntent);
我曾经设置intent=newintent(context,BRClass.class)代码>之前<代码>捆绑剩余=新捆绑()代码>但是,因为每次都有一个新的报警意图,所以我不能使用alarmMgr.cancel(PendingEvent)代码>因为我不知道在pendingent pendingent=pendingent.getBroadcast(context,(int)Time,intent,pendingent.FLAG_ONE_SHOT)中使用哪个intent
代码>
在当前实现中,只设置第一个报警,而不设置其他报警
如何取消使用上述代码创建的报警?具有意图的数组?当您使用AlarmManager
设置报警时,它将自动取消使用匹配的PendingEvent设置的任何其他报警。这意味着,如果要设置多个报警,必须确保每个pendingent
是唯一的
要确保pendingent
是唯一的,您需要确保以下至少一项是唯一的:
- 调用
pendingent.getBroadcast()时使用的requestCode
意图中的操作
Intent中的数据
请注意,在确定2pendingent
s“匹配”时,不考虑“附加”
另外,您的requestCode
是通过将long
值转换为int
来创建的。这是不好的,因为long
值不适合int
并且会丢失一些值位。这不能保证您的requestCode
s是唯一的。您应该将long
值转换为另一个实际适合int
的值,以确保requestCode
的唯一性。当您使用AlarmManager
设置报警时,它将自动取消任何其他设置了匹配挂起内容的报警。这意味着,如果要设置多个报警,必须确保每个pendingent
是唯一的
要确保pendingent
是唯一的,您需要确保以下至少一项是唯一的:
- 调用
pendingent.getBroadcast()时使用的requestCode
意图中的操作
Intent中的数据
请注意,在确定2pendingent
s“匹配”时,不考虑“附加”
另外,您的requestCode
是通过将long
值转换为int
来创建的。这是不好的,因为long
值不适合int
并且会丢失一些值位。这不能保证您的requestCode
s是唯一的。您应该将long
值转换为另一个实际适合int
的值,以确保requestCode
的唯一性。您必须将所有(int)时间
保存在某个地方,然后使用新构造的pendingent
(int)调用取消时间
。使用哪种意图?一个全局初始化并反复使用的对象,或者每次使用一个新对象?每个意图只是一组数据,您不需要存储意图实例。每当你需要与过去某个地方相同的意图时,就用相同的参数来构造它。在您的情况下,它将是newintent(context,BRClass.class)
。唯一必须保存的是请求代码(int)Time
。其他的可以在你需要的时候建造。啊,还有额外的。然后也保存所有时间。您必须将所有(int)时间
保存到某个地方,然后使用新构造的挂起内容
调用取消
,每次(int)时间
。使用哪种意图?一个全局初始化并反复使用的对象,或者每次使用一个新对象?每个意图只是一组数据,您不需要存储意图实例。每当你需要与过去某个地方相同的意图时,就用相同的参数来构造它。在您的情况下,它将是newintent(context,BRClass.class)
。唯一必须保存的是请求代码(int)Time
。其他的可以在你需要的时候建造。啊,还有额外的。然后把它们都保存起来。