我有一些奇怪的行爲,我只能假設是因爲我正在使用的等待意圖。如何取消Android Widget中的待處理內容?
情景
我有具有4個按鍵的微件(4×1)。在小部件的onUpdate中,我爲每個按鈕添加一個待定的意圖。我的意圖用一個bundeled參數觸發一個Service,並根據這個參數啓動一些東西。我附上意圖,因爲這:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Bundle b = new Bundle();
b.putString("myVariable", someVariable);
Intent intent = new Intent(context, AppStarterService.class);
intent.putExtras(b);
PendingIntent pendingIntent = PendingIntent.getService(context, buttopnPosition, intent, 0);
views.setOnClickPendingIntent(R.id.btnOne, pendingIntent);
問題
代碼工作得很好,直到用戶決定更新按鈕的內容。然後,完成一個新的待定意向。所以,當我再次按下按鈕時,有時它仍然執行舊的意圖,而不是新的意圖。我不知道如何更好地解釋這一點。假設我的第一個意圖參數是「TestOne」,在我更新後,新意圖的參數是「TestX」。當用戶點擊按鈕時,在我的服務中,我仍然使用「TestOne」代替「TestX」。所以,我的猜測是,不知何故,當widget按鈕內容發生變化時,我需要取消先前的意圖。 這是問題嗎?難道我做錯了什麼 ?我如何取消舊的意圖,我需要重新創建它,然後取消它?
謝謝你的時間。
你試過了* pendingIntent.cancel(); * before * views.setOnClickPendingIntent(R.id.btnOne,pendingIntent); *? – Dharmendra 2012-02-25 09:02:57