在我的应用中,我有很多闹钟,通知和小部件,所有这些都需要PendingIntents。 让所有这些项目彼此并排,我在徘徊是什么是确保PendingIntents不会混合在一起的最佳方法。
阅读PendingIntent's documentation之后,特别是这部分:
如果您确实需要多个不同的PendingIntent对象同时处于活动状态(例如用作同时显示的两个通知),那么您需要确保关联它们的某些内容有所不同他们有不同的PendingIntents。这可能是Intent.filterEquals考虑的任何Intent属性,或者是提供给getActivity的不同请求代码整数......
我想到了以下解决方案:让一个类通过将当前的一个保存在共享的prefs中来生成请求代码,并且每次需要请求代码时,它将前进最后一个值,返回并存储它。 类似的东西:
private static final String PREF_PREV_UNIQUE_REQUEST_CODE = "UniquePendingIntentRequestCodeGenerator.PREF_PREV_UNIQUE_REQUEST_CODE";
private static final int INITIAL_UNIQUE_REQUEST_CODE = 10000;
public static int generateUniqueRequestCode () {
//get new request code and store
int prevRequestCode = SharedPrefsManager.getInstance().getPref(SharedPrefsManager.PREF_NAME_GLOBAL_PREFS, PREF_PREV_UNIQUE_REQUEST_CODE , INITIAL_UNIQUE_REQUEST_CODE);
int newRequestCode = prevRequestCode + 1;
//save for general count
SharedPrefsManager.getInstance().setPref(SharedPrefsManager.PREF_NAME_GLOBAL_PREFS, PREF_PREV_UNIQUE_REQUEST_CODE , newRequestCode);
return newRequestCode;
}
您对此解决方案有何看法?你有更好的想法吗?
答案 0 :(得分:0)
这取决于您的应用程序以及您使用PendingIntent
的内容。例如,如果每个PendingIntent
都有唯一的操作,那么您不需要具有唯一的请求代码。
但是,如果请求代码是唯一可以使其独一无二的,那么您建议的解决方案听起来很不错。