2013-03-08 42 views

回答

10

FLAG_CANCEL_CURRENT - 如果所描述的PendingIntent已經存在,則在生成新的PendingIntent之前取消當前的PendingIntent。

FLAG_NO_CREATE - 如果所描述的PendingIntent尚不存在,那麼只需返回null而不是創建它。

FLAG_ONE_SHOT - 此PendingIntent只能使用一次。

FLAG_UPDATE_CURRENT - 如果所描述的PendingIntent已經存在,那麼保留它,但是用它替換它的額外數據與新Intent中的內容。

如果您確實需要同時激活多個不同的PendingIntent對象(例如用作同時顯示的兩個通知),那麼您需要確保它們有不同的內容將它們與不同的PendingIntents關聯。這可以是任何提供由Intent.filterEquals考慮的意圖屬性,或不同的請求碼整數到getActivity(Context, int, Intent, int), getActivities(Context, int, Intent[], int), getBroadcast(Context, int, Intent, int), or getService(Context, int, Intent, int).

+0

即通知。我在談論Pending Intent。每次它應該創建新的意圖。 – Chintan 2013-03-08 16:52:06

+0

我已經更新了我的答案 – 2013-03-09 04:03:20

29

添加一個隨機數這樣的請求的代碼:

Intent intent = new Intent(context, YourClassname.class); 
intent.putExtra("some data", "txt"); // for extra data if needed.. 

Random generator = new Random(); 

PendingIntent i=PendingIntent.getActivity(context, generator.nextInt(), intent,PendingIntent.FLAG_UPDATE_CURRENT); 
+8

您最好使用當前的時間戳,因爲每秒保證不同。一個隨機數_could_可以被重複...你需要轉換成一個int,但是:'(int)(System.currentTimeMillis()/ 1000)' – 2013-10-25 14:28:01

+7

在計算機中,一秒的長度是巨大的,我會說一個隨機數字不太可能重複! – mxcl 2013-12-05 14:00:37

+1

@mxcl在「電腦土地」中是大得多。但這不是電腦用地。 ing0是正確的,用時間戳記要好得多。 – 2014-12-04 23:11:58