2013-04-03 4 views
14

Sono interessato all'utilizzo di intenti in sospeso con le trasmissioni locali. Per rendermi chiaro, sto usando quanto segue per la registrazione dei ricevitori e l'invio della trasmissione: android.support.v4.content.LocalBroadcastManager.È possibile utilizzare gli intent in sospeso con i broadcast locali?

Ho un ricevitore di trasmissione locale in un servizio che funziona. Sto tentando di inviare trasmissioni locali da un layout di notifica personalizzato che include elementi selezionabili.

Il ricevitore di trasmissione locale - riceve solo semplici intenti di azione. Stavo cercando qualcosa di simile senza alcun risultato:

Intent backintent = new Intent("GOTO_START_BROADCAST"); 
PendingIntent backIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, backintent, 0); 
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification); 
contentView.setOnClickPendingIntent(R.id.imageView1, backIntent); 
+0

Cosa c'è di sbagliato nell'usare un IntentService invece di un LocalBroadcast per questo caso d'uso? –

risposta

22

Sono interessato a utilizzo degli intenti di attesa con le trasmissioni locali.

Questo non è possibile.

Il punto dietro a PendingIntent è consentire un altro processo per eseguire un'azione richiesta, ad esempio l'invio di una trasmissione.

Il punto dietro LocalBroadcastManager è quello di mantenere la trasmissione all'interno del processo.

Quindi, un PendingIntent può emettere una trasmissione normale, ma non uno tramite LocalBroadcastManager.

+0

Grazie per il chiarimento. – Nims

+0

c'è un modo per me di avere una struttura come 'PendingIntent.UPDATE_CURRENT' ecc., Usando' LocalBroadcastManager'? Fondamentalmente quando ci sono un sacco di eventi in una volta, vorrei inviare solo un 'LocalBroadcast' invece di uno per ogni evento. Come potrei realizzare quello usando un 'LocalBroadcast'. – 500865

+1

@ 500865: 'PendingIntent' non può funzionare con' LocalBroadcastManager'. Un 'PendingIntent' è progettato per funzionare oltre i limiti del processo; 'LocalBroadcastManager' è progettato per * non * funzionare oltre i limiti del processo. – CommonsWare

Problemi correlati