Android 传递PendingEvent请求代码以放置额外的
我需要为在Pending帐篷内创建的每个警报添加一个唯一的IDAndroid 传递PendingEvent请求代码以放置额外的,android,Android,我需要为在Pending帐篷内创建的每个警报添加一个唯一的ID alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 当前请求代码被设置为0 我希望能够在列表视图中列出报警,然后允许用户从列表中取消报警次数。我的逻辑是为每个要取消的报警使用唯一的ID 如何为悬挂式帐篷内创建的每个警报设置唯一id 这是我用来设置报警的方法 这是我将用来cancelAlarm() requestCode是您自己制作的。这只是一种区分类似
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
当前请求代码被设置为0
我希望能够在列表视图中列出报警,然后允许用户从列表中取消报警次数。我的逻辑是为每个要取消的报警使用唯一的ID
如何为悬挂式帐篷内创建的每个警报设置唯一id
这是我用来设置报警的方法
这是我将用来cancelAlarm()
requestCode
是您自己制作的。这只是一种区分类似的pendingent
s的方法。我当然不明白这一点。是否没有与挂起的意图关联的ID?如果他们没有id,我如何跟踪他们?或者更好的是,操作系统如何跟踪它们?我的意思是,我假设它只知道内存位置。使用它是否有意义,因为它不是唯一的requestCode
有点像ID,在应用程序级别,只是您分配了它。操作系统主要通过上下文来跟踪它们。如果您请求具有相同类型和请求代码的pendingent
s,并且Intent
s匹配,则无论您为后续请求附加了什么Intent
,它们都将是相同的pendingent
。requestCode
是一种创建新的pendingent
的方法,它与系统已经保存的内容相同。只需使用递增计数器创建新的requestCode
s即可。你想如何追踪他们取决于你;e、 例如,SharedReferences
,或数据库或文件等。requestCode
是您制作的任何东西。这只是一种区分类似的pendingent
s的方法。我当然不明白这一点。是否没有与挂起的意图关联的ID?如果他们没有id,我如何跟踪他们?或者更好的是,操作系统如何跟踪它们?我的意思是,我假设它只知道内存位置。使用它是否有意义,因为它不是唯一的requestCode
有点像ID,在应用程序级别,只是您分配了它。操作系统主要通过上下文来跟踪它们。如果您请求具有相同类型和请求代码的pendingent
s,并且Intent
s匹配,则无论您为后续请求附加了什么Intent
,它们都将是相同的pendingent
。requestCode
是一种创建新的pendingent
的方法,它与系统已经保存的内容相同。只需使用递增计数器创建新的requestCode
s即可。你想如何追踪他们取决于你;e、 例如,SharedReferences
,或数据库或文件等。
public void setAlarm(Context context, Long affirmationTime){
alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), affirmationTime, alarmIntent);
ComponentName receiver = new ComponentName(context, BootReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
public void cancelAlarm(Context context){
// If the alarm has been set, cancel it.
if (alarmManager != null) {
alarmManager.cancel(alarmIntent);
}
// Disable {@code SampleBootReceiver} so that it doesn't automatically restart the
// alarm when the device is rebooted.
ComponentName receiver = new ComponentName(context, BootReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}