2012-03-22 15 views
13

Quando si utilizza un PendingIntent in un AppWidgetProvider, sto usando il seguente codice:Annullamento di un PendingIntent

views.setOnClickPendingIntent(viewId, 
       PendingIntent.getBroadcast(context, 0, intent, 
       PendingIntent.FLAG_UPDATE_CURRENT)); 

Quindi attualmente non c'è alcun riferimento mantenuta al PendingIntent restituito dal metodo getBroadcast. In una situazione specifica, ora desidero annullare PendingIntent. C'è un modo per riportare il PendingIntent dalla vista? O è l'unico modo per chiamare in seguito il metodo cancel di PendingIntent mantenendo un riferimento ad esso?

+0

Vedere http://stackoverflow.com/a/4350149/165674 –

+0

Grazie, Dheeraj! Sono un po 'di fretta ora, ma controllerò e provalo al più presto. Saluti! –

risposta

29

Dove si desidera annullare, si farebbe il seguente (da qualche altra parte nel codice di base):

PendingIntent.getBroadcast(context, 0, intent, 
          PendingIntent.FLAG_UPDATE_CURRENT).cancel(); 

dove intent è lo stesso come riferimento nel codice di cui sopra. PendingIntent.getBroadcast(...) utilizzando PendingIntent.FLAG_UPDATE_CURRENT restituirà un riferimento a quello esistente già creato o ne creerà uno se attualmente non esiste.

+0

Ah, questo ha davvero funzionato. :) Grazie! –

+2

goBroadcast restituisce lo stesso oggetto * riferimento * nel caso in cui utilizzo questo flag? –

Problemi correlati