确保PendingIntents获得正确行动的最佳方法是什么?

时间:2013-12-02 22:26:15

标签: android android-pendingintent

在我的应用中,我有很多闹钟,通知和小部件,所有这些都需要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;
}

您对此解决方案有何看法?你有更好的想法吗?

1 个答案:

答案 0 :(得分:0)

这取决于您的应用程序以及您使用PendingIntent的内容。例如,如果每个PendingIntent都有唯一的操作,那么您不需要具有唯一的请求代码。

但是,如果请求代码是唯一可以使其独一无二的,那么您建议的解决方案听起来很不错。

相关问题