Me llamo al Alarm Manager
para actualizar un widget con un Service
. Tengo dos preguntas diferentes.¿Cómo usar Alarm Manager incluso si la aplicación está cerrada?
Primera pregunta: Llamaré al servicio con la intención de Alarm Manager. De esta manera:
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
context.startService(new Intent(context, MyService.class));
Long repeat = Long.parseLong(prefs.getString("update_preference", "600"));
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi);
¿Es incorrecto?
Se ve y funciona bien. Pero cuando he consultado los servicios de trabajo , no puedo ver mi nombre de servicio en la lista. Quizás no se esté ejecutando como un servicio único/separado. Acabo de ver el nombre de la aplicación (no como un servicio). No estoy seguro de cómo separar o importa?
Otra pregunta: durante mucho tiempo, la aplicación en ejecución, que controla la actualización de widgets, es cerrada de alguna manera (manualmente o por un asesino de tareas). Por supuesto, va a parar Alarm Manager
y las funciones del widget también se detendrán. Por ejemplo, hacer clic en un botón.
Pero, Twitter resolvió este problema. Mientras el widget está activo, si cierro la aplicación principal (Twitter) -que controla el widget-, hago clic en el widget, de alguna manera se activa la aplicación y se inicia de nuevo. Entonces los botones funcionan correctamente. ¿Cómo es eso posible?
Cualquier ayuda sería apreciada.
Lo siento por 2 repeticiones diferentes, he editado mi pregunta. –
aún no necesita el 'context.startService' embargo, PendingIntent iniciará el servicio – tyczj
En primer lugar, mi widget busca datos de cualquier servidor.¿Estás seguro de que usar el servicio es innecesario? ¿Debería usar la función de actualización en la clase de Widget? ¿Puedes dar un ejemplo para usar? Gracias. –