he un servicio que se define como:Android: mantener un servicio en segundo plano vivos (prevención de la muerte proceso)
public class SleepAccelerometerService extends Service implements SensorEventListener
Esencialmente, estoy haciendo una aplicación que controla la actividad del acelerómetro, por diversas razones, mientras el usuario duerme con su teléfono/dispositivo en la cama. Este es un servicio de larga duración que NO DEBE matarse durante la noche. Dependiendo de cuántas aplicaciones en segundo plano y procesos periódicos se producen durante la noche, a veces Android mata a mi proceso, lo que termina mi servicio. Ejemplo:
10-04 03:27:41.673: INFO/ActivityManager(1269): Process com.androsz.electricsleep (pid 16223) has died.
10-04 03:27:41.681: INFO/WindowManager(1269): WIN DEATH: Window{45509f98 com.androsz.electricsleep/com.androsz.electricsleep.ui.SleepActivity paused=false}
no quiero obligar al usuario a tener 'SleepActivity' o alguna otra actividad en mi aplicación como el primer plano. No puedo hacer que mi servicio se ejecute periódicamente, ya que está interceptando constantemente OnSensorChanged.
¿Algún consejo? el código fuente está aquí: http://code.google.com/p/electricsleep/
Gracias. Ya había oído hablar de startForeground antes, pero no esperaba que startForeground fuera un método en Service (aunque tiene sentido que esté allí ahora que lo pienso). –
Tengo una consulta. ¿Qué pasa si no quiero mostrar ninguna notificación pero aún quiero usar el método startForeground()? –
@farhanahaque - No puedes. Solo debe utilizar 'startForeground()' para ver si la eliminación del servicio podría ser perjudicial para el usuario, por ejemplo, haciendo algo como tocar música. Siendo este el caso, debe ser algo que el usuario conoce y por lo tanto tiene visibilidad a través de una Notificación. 'startForeground()' no pretende ser una alternativa para responder adecuadamente a los eventos del ciclo de vida. –