Android: Inicie el servicio con Context.startService vs PendingIntent.getService
Context.startService
Intent intent = new Intent(context, MyService.class); context.startService(intent);
PendingIntent.getService
- Android AlarmManager problema con la configuración y restablecimiento de una alarma
- Interacción con AsyncTask de la barra de notificación
- Android: Crear una sola tarea con actividades de varias aplicaciones (problema Lauchmode)
- Cómo utilizar las acciones de la notificación sin iniciar la actividad
- Cómo abrir la página de fragmentos, cuando se presiona una notificación en android
Intent intent = new Intent(context, MyService.class); PendingIntent pi = PendingIntent.getService(context, 0, intent, 0); pi.send();
Preguntas
- ¿Cuándo comenzarías un servicio con Context.startService vs a PendingIntent?
- ¿Por qué usar uno sobre el otro?
- Objeto AlarmManager después de apagar y en el teléfono
- Android - ¿Por qué utilizar intenciones pendientes para geofences
- Android: la bandera de tareas no funciona para PendingIntent
- Mostrar diálogo utilizando PendingIntent
- ¿Qué contexto recibe BroadcastReceivers al escuchar BOOT_COMPLETED?
- Notificación RemoteView en el oyente de clics
- La intención en la notificación no funciona
- Pasando intención extra a receptor de radiodifusión android
Realmente no hay diferencia.
Específicamente, el método Context se utiliza para iniciarlo directamente donde PendingIntent normalmente se utiliza con una notificación para disparar esta intención cuando se pulsa, lo cual se retrasa hasta que el usuario lo toque (normalmente). Sin embargo; Normalmente no enviaría PendingIntent directamente porque no es para lo que sirve.
Un PendingIntent es un intento que está pendiente, pendiente, lo que significa que no se supone que suceda ahora, pero en un futuro próximo. Mientras que con una intención, se envía en el mismo momento.
Si un PendingIntent no está pendiente cuando se utiliza, entonces ya no es un PendingIntent y es de hecho un Intent. Derrotar el propósito por completo .
PendinIntents son muy utilizados para widgets. Como el diseño de un widget en ejecución no "pertenece" a tu código, sino que está bajo control del sistema, no puedes asignar directamente a los elementos de la interfaz. En su lugar, se asigna un PendingIntent a esos elementos (como botones), de modo que cuando el usuario los toca, PendingIntent es "ejecutado", algo así como:
// get the widget layout RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.id.widget_layout); // prepare to listen the clicks on the refresh button Intent active = new Intent(context, WidgetCode.UpdateService.class); PendingIntent refreshPendingIntent = PendingIntent.getService(context, 0, active, 0); remoteViews.setOnClickPendingIntent(R.id.buttonWidgetRefresh, refreshPendingIntent); // send the changes to the widget AppWidgetManager.getInstance(context).updateAppWidget(appwidgetid, remoteViews);
En este caso, un botón del widget inicia un servicio. Por lo general, poner información adicional en la intención, con putExtras (), por lo que el servicio recibirá la información necesaria para hacer su trabajo.