Android 使用不同上下文注册或取消同一警报是否会产生意外后果?
我有这个方法来注册/取消我从两个不同的活动调用的警报-因此每次传入的上下文都是不同的 我设计它是为了让Uri中的alertId是报警的唯一标识符——所有其他参数类、类别都是相同的 但是,有时ActivityA可能会通过在挂起的意图中使用其contextA来注册alertId=1的报警。ActivityB可以通过使用其contextB再次注册警报来更新警报ID=1。与取消警报类似 相同的警报是否会更新 因此,我想知道使用相同的alertId注册报警时,使用不同的上下文是否会产生副作用。有人知道这件事吗Android 使用不同上下文注册或取消同一警报是否会产生意外后果?,android,android-intent,Android,Android Intent,我有这个方法来注册/取消我从两个不同的活动调用的警报-因此每次传入的上下文都是不同的 我设计它是为了让Uri中的alertId是报警的唯一标识符——所有其他参数类、类别都是相同的 但是,有时ActivityA可能会通过在挂起的意图中使用其contextA来注册alertId=1的报警。ActivityB可以通过使用其contextB再次注册警报来更新警报ID=1。与取消警报类似 相同的警报是否会更新 因此,我想知道使用相同的alertId注册报警时,使用不同的上下文是否会产生副作用。有人知道这件
static void registerAlarm(Context context, Alert alert, Date alarmTime) {
// Get the AlarmManager Service
AlarmManager mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent mNotificationReceiverIntent;
PendingIntent mNotificationReceiverPendingIntent;
// Create PendingIntent to start the AlarmNotificationReceiver
mNotificationReceiverIntent = new Intent(context, NotifyActivity.class);
mNotificationReceiverIntent.setAction(Intent.ACTION_SENDTO);
// workaround from mazur - android bug database
Bundle hackbundle = new Bundle();
hackbundle.putParcelable(Alert.ALERT, alert);
mNotificationReceiverIntent.putExtra(Alert.ALERT, hackbundle);
mNotificationReceiverPendingIntent = PendingIntent.getBroadcast(context, 0,
mNotificationReceiverIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mNotificationReceiverIntent.setData(AlertsDbHelper.getUriForAlert(alert.alertId));
mAlarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime.getTime() + JITTER,
mNotificationReceiverPendingIntent);
Log.i(TAG, "registerAlarm() Alarm Set for alert id:" + alert.alertId + " alarm Time "
+ alarmTime);
Toast.makeText(context,
"Alarm Set for alert id:" + alert.alertId + " alarm Time " + alarmTime,
Toast.LENGTH_LONG).show();
}
根据这一点,使用不同的上下文并不重要,这不会影响将PendingEvents识别为匹配。我已经在自己的应用程序中确认了这一点,我使用一个活动作为上下文设置了一个警报,并使用该活动的上下文从另一个活动中取消了警报,并且成功取消了警报,这意味着不同的上下文对识别正确的警报没有影响。相信你的话-没有测试它