的文档PendingIntent
指出,在 中PendingIntent.getBroadcast()
,requestCode
参数“当前未使用”。但是,我做了一些非常详尽的测试,并且设置不同requestCode
的 s 很明显地改变了程序的行为(并且设置不同requestCode
的 s 似乎是区分警报意图的一种普遍接受的方法)。
很requestCode
明显地使用了一个有被“修复”风险的错误吗?或者我可以继续使用它来区分我的 PendingIntents 吗?
一些背景:
onCreate
我在主 Activity 中使用以下代码设置了一个测试应用程序:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, MyAlarmReceiver.class);
intent.putExtra("text", "text one");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, 1);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);
intent = new Intent(this, MyAlarmReceiver.class);
intent.putExtra("text", "text two");
pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, 10);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);
}
以及一个非常简单的AlarmReceiver:
public class MyAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getStringExtra("text"), Toast.LENGTH_SHORT).show();
}
}
然后我尝试为 PendingIntents 设置不同的标志和 requestCodes。这些是结果:
https://docs.google.com/spreadsheet/ccc?key=0AnqelXkzmAL0dDNYeVEyekJyRkV1VDZNVVIyQTJkdmc#gid=0