2011-01-26 4 views
7

Hemos estado trabajando en una aplicación web desde hace algún tiempo, y está diseñada para ser visitada únicamente a través de nuestra aplicación Android. Obviamente, la aplicación en sí es extremadamente liviana, principalmente brinda funcionalidad para crear cuentas e iniciar sesión, así como para asegurarnos de que solo se puede acceder a la aplicación webapp a través de nuestra aplicación de Android. PERO estoy divagando ...Funcionalidad de salida/tiempo de espera de la aplicación para Android

La aplicación es bonita Depende de las variables de sesión de PHP, que caducan, y en el entorno de prueba actual, si tu sesión expira, te expulsarán de todos modos de la pantalla de inicio de sesión. Pero en producción, la pantalla de inicio de sesión estará en la aplicación de Android, completamente independiente de WebView.

Mi idea ahora es ejecutar un Servicio en segundo plano que verifique la marca de tiempo que tenemos en la base de datos para la última actividad de un usuario, y si está fuera de una ventana determinada, cerramos la vista web. Pero si hubiera alguna manera, simplemente podríamos salir de la aplicación después de 15 minutos (o lo que sea) de inactividad, eso sería preferible, o al menos más fácil ... Creo que ...

¿Hay alguna manera de hacerlo esto - ¿configura una función de salida de tiempo de espera automático? ¿O tal vez salir de la aplicación con la función onPause?

Respuesta

7

Mi idea ahora es ejecutar un Servicio en segundo plano que verifique la marca de tiempo que tenemos en la base de datos para la última actividad del usuario, y si está fuera de una ventana determinada, cerramos la vista web.

¿Por qué un Service?

Pero si había alguna manera que pudimos salir de la aplicación después de 15 minutos (o lo que sea) de inactividad - que sería preferible - o por lo menos más fácil ... creo ...

No desea salir de la aplicación. Quieres volver a la pantalla de inicio de sesión.

Compruebe el estado de tiempo de espera en onResume() de la actividad WebView -hosting. Si la actividad es demasiado antigua, llame al startActivity() para su pantalla de inicio de sesión, luego llame al finish() para cerrar la actividad de WebView -hosting.

+0

Verá, esta es la razón por la cual Stackoverflow es mi sitio favorito. ¿Por qué en el mundo quiero salir de la aplicación cuando podría ir a la pantalla de inicio de sesión ... Solo necesitaba una nueva perspectiva y todo tiene mucho sentido! Ahora, supongo que aún no me he sumergido en esto, ¿es el tiempo de espera algo que puedo establecer en la actividad de alojamiento de WebView, es decir, solo un temporizador que se ejecuta cuando se inicia la actividad? ¿O es más complicado que eso? – user446882

+0

¿Y asumo que el temporizador continuará funcionando incluso cuando la aplicación está en segundo plano? – user446882

+1

@ user446882: ¿Por qué usar un temporizador? Simplemente compare la marca de tiempo actual con cualquier valor que represente el "egad! ¡Hemos caducado!" valor.Si esto es puramente "inactividad", guarde la marca de tiempo actual en 'onPause()' y compárela con la marca de tiempo actual en 'onResume()'. – CommonsWare

0

Sé que esto será considerado herejía por los desarrolladores de Android, pero esto debería funcionar:

Activity.moveTaskToBack(true); 
Process.killProcess(Process.myPid()); 

Aún así, esto sería un último recurso.

+5

Google ha declarado en repetidas ocasiones que los desarrolladores no deberían hacer esto. – CommonsWare

+1

No son los desarrolladores los que deben aprender esto tanto como los usuarios de Android, por lo que Google necesita educar mejor a los usuarios. Es sorprendente lo populares que son los asesinos de tareas y cómo las personas están convencidas de que ahorran batería. Si la gente ve mi aplicación "funcionando", asumen que está usando la batería y culpan a mi aplicación, no a Google. Es por eso que tenemos que matar el proceso. – dhaag23

Cuestiones relacionadas