2010-09-14 23 views
5

Estoy tratando de ejercer un pequeño control sobre el estado de un icono en la barra de estado. Quiero ser capaz de hacer lo siguiente:controlando el icono de la barra de estado de Android

  1. Mantener el icono visible en la barra de estado, siempre y como la aplicación se está ejecutando, incluso si el usuario elige para borrar la barra de estado.
  2. ¿Borrar el icono de la barra de estado si la aplicación se cierra, incluso (especialmente) si se elimina? Me doy cuenta de que puedo eliminarlo cuando la aplicación se cierre de manera explícita, pero quiero asegurarme de que desaparezca si la aplicación es eliminada. Debo admitir que aún no he probado esto.

No he podido obtener una buena información sobre esto, aunque he visto aplicaciones que parecen estar haciendo esto.

Respuesta

4

1) Eche un vistazo a la página de documentos para desarrolladores en status bar notifications. También tenga en cuenta que querrá mirar la constante FLAG_NO_CLEAR, que debería cubrir su condición.

2) Mantener el icono no es necesariamente algo malo en el caso de que se mate la aplicación, y en cierto modo depende del propósito de la aplicación. En particular, si su aplicación entra en el fondo y luego es asesinado, leaving the icon has actually been noted to be expected behavior by one of Google's engineers:

correcta, OnDestroy() no se llama cuando se mató. Esta es la misma actividad de : el kernel elimina los procesos cuando es necesario, sin esperar la aplicación.

La barra de estado mantiene correctamente el icono . El servicio será más tarde reiniciado; no ha sido detenido.

Es normal que los servicios de fondo se maten regularmente. Esta es intencional, ya que generalmente servicios en segundo plano no son algo el usuario es directamente consciente de, y reiniciar sus procesos de vez en y luego evita problemas con este tipo de servicios el consumo de cantidades crecientes de RAM.

Si el servicio es algo que el usuario es realmente consciente de (como la música reproducción), considere Service.startForeground().

Habiendo dicho eso, el ícono probablemente desaparezca de todos modos. Otras aplicaciones con iconos persistentes (me viene a la mente Meebo) desaparecerán si las matas con un administrador de tareas. Sin embargo, no estoy seguro si esto sucede en todos los casos. Si el OOM mata tu aplicación mientras está en segundo plano, lo más probable es que no quieras limpiarla de todos modos.

+0

FLAG_NO_CLEAR funciona como se esperaba, debería haber cogido eso, ¡gracias! Por algún motivo, la barra de estado no se borra cuando elimino la aplicación.Básicamente, quiero que el icono de la barra de estado indique si la aplicación se está ejecutando o no, por lo que quiero que desaparezca si se detiene por algún motivo. Por supuesto, onDestroy() lo borro, pero persiste cuando se elimina la aplicación o se cierra Force. – KMP14

+0

No estoy seguro de cómo otras aplicaciones manejan esto, ya que 'onDestroy()' no se invoca cuando una aplicación se cierra a la fuerza o se bloquea. Sin embargo, es un tema que ha surgido anteriormente en las listas de correo. Tal vez comience por echar un vistazo aquí: http://www.mail-archive.com/[email protected]/msg59044.html – eldarerathis

Cuestiones relacionadas