2010-12-29 10 views
5

Estoy tratando de escribir una aplicación muy simple que hará solo una acción muy simple sin GUI, luego mostrar un mensaje corto (usando tostadas, en parte superior de lo que ya estaba en la pantalla, por ejemplo, la pantalla de inicio), y finalizar. Eso es todo.cómo deshacerse por completo de la GUI de una actividad (evitar una pantalla en negro)

Esto casi funciona, pero sigo recibiendo una breve pantalla en negro después de que se inicia la aplicación, luego regreso a la pantalla de inicio y las cosas funcionan como pretendo después de eso. Pensé que no usar setContentView en mi actividad (privando así de una vista) sería suficiente para evitar la pantalla en negro, pero aún aparece. Tenga en cuenta que (como se sugiere en una pregunta relacionada), un servicio no es la respuesta a mi problema. Solo quiero una aplicación sin GUI (excepto una tostada) que se ejecute y termine de inmediato. Gracias :)

+1

Probablemente sería útil si explicó por qué un servicio no es la respuesta a su problema. Esto suena muy orientado al servicio. – Matt

+1

Primero, precisamente porque no quiero que mi proceso siga ejecutándose en segundo plano como lo hacen los servicios. Quiero entrar y salir rápido y limpio. Y segundo, la documentación de Android establece directamente que las actividades no tienen que tener una IU, pero no encontré la manera de hacerlo. (La respuesta 1 ya resolvió mi problema) Gracias de todos modos. – shutou

Respuesta

17

En <activity> en su uso manifiesta

android:theme="@android:style/Theme.NoDisplay" 

Nota esto supone llamará al finish() antes de regresar del onResume(). Si va a hacer más trabajo después de eso (por ejemplo, si va a hacer alguna conexión de red u otra cosa que no se puede hacer de forma rápida y sincrónica), es probable que desee iniciar un servicio para encargarse del trabajo. la plataforma, su proceso debe continuar ejecutándose después de que la actividad finalice.

+0

¡Genial! Esto es exactamente lo que necesitaba. Precisamente porque no quiero que mi proceso siga funcionando en segundo plano. ¡Gracias amigo! – shutou

+0

@shutou: Probablemente (aunque no tengo ni idea) más gastos generales que iniciar un servicio. No tiene que permitir que el servicio continúe ejecutándose en segundo plano. Vea mi respuesta a mi respuesta. – Falmarri

+0

Estoy utilizando una actividad de entrada como actividad de inicio, porque la actividad real debe determinarse por alguna lógica (por ejemplo, introducción, registro o contenido). Antes de esto, la actividad de entrada también se mostraría, lo cual era molesto, ¡pero ahora ha desaparecido! Gracias – Meanman

-1

un servicio no es la respuesta a mi problema

sí lo es

+0

Muy bien, puede ser una forma alternativa de hacer lo que quiero, pero como se ve en la respuesta, es posible apagar la pantalla de la IU de la aplicación. Y dado que no quiero que se ejecuten procesos en segundo plano después de que termine mi sencilla aplicación, calculé que un servicio puede ser más de lo que necesito. Sin embargo, lo admito, aún no sé lo suficiente como para estar seguro de si un servicio podría ser más eficiente que la solución dada en la Respuesta 1, que permite que mi aplicación tenga una actividad mínima que no abarque ningún proceso adicional. o hilos Es posible que aprenda más sobre los servicios para considerar los pros y los contras con más detalle. Gracias – shutou

+0

Los servicios no generan procesos o hilos adicionales. Un servicio es esencialmente una actividad sin una GUI. No he inspeccionado el código fuente a fondo, pero voy a ser casi exactamente eso. No necesita dejar el servicio en funcionamiento. De hecho, no hagas eso. Simplemente inicie el servicio, haga el trabajo y luego llame a 'stopSelf()' – Falmarri

0

Suena como un trabajo para un IntentService. Usted le envía un intento, y si no se está ejecutando comienza, luego trata todos los intentos recibidos, luego se detiene. Corto y simple.

Cuestiones relacionadas