2012-08-24 23 views
10

Tengo este código:¿Puedo usar AlarmManager con LocalBroadcastManager en android?

private AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
private PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, new Intent("my action-name"), 0); 

alarmManager.setInexactRepeating((int)AlarmManager.ELAPSED_REALTIME_WAKEUP,  SystemClock.elapsedRealtime() + autoUpdateIntervalInMinutes * 60 * 1000, autoUpdateIntervalInMinutes * 60 * 1000, alarmIntent); 

Pero quisiera cambiar esto para LocalBroadcastManager. es posible?

Respuesta

8

No, no es posible, porque LocalBroadcastManager es solo para su propio proceso, y el backend de AlarmManager se ejecuta en un proceso diferente. Es por eso que no hay forma de crear un PendingIntent que funcione con LocalBroadcastManager.

+2

hay una manera de hacer el intento más privado, de manera que otras aplicaciones no serán capaces de usar ¿eso? –

+2

En resumen, no. Sin embargo, cualquier otra aplicación que desee escuchar sus transmisiones necesitará conocer la cadena de acción completa. Esto al menos te brinda seguridad a través de la oscuridad (que en realidad no es seguridad). – Doge

4

Pero se podría registrar un BroadcastReceiver que básicamente convierte la "Global", transmitido en una LocalBroadcast:

public class AutoUpdateBroadcastReceiver extends BroadcastReceiver { 

    private static final String TAG = AutoUpdateBroadcastReceiver.class.getSimpleName(); 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    Log.d(TAG, ".onReceive"); 
    LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context); 
    lbm.sendBroadcast(intent); 
    } 
} 
+2

Sí, usted puede, pero eso no significa que deba hacerlo. El objetivo de 'LocalBroadcastManager' es que solo puede recibir transmisiones desde dentro de la aplicación, por razones de seguridad. Si crea un receptor que recibe transmisiones desde el exterior y las retransmite en el administrador local, se frustra todo el propósito de 'LocalBroadcastManager'. También puede registrar el receptor de forma no local y no poner en peligro todo lo demás que pueda estar registrado en el 'LocalBroadcastManager'. – spaaarky21

Cuestiones relacionadas