Las WebViews solo pueden residir en actividades porque son un componente de la interfaz de usuario. La mejor manera para que usted resuelva este problema es descargar la comunicación que su javascript está haciendo en el servicio mismo. Así es como funciona Android. La única otra solución es hacer que su comunicación javascript/servidor sea lo suficientemente tolerante a los fallos que pueda soportar perder la conexión en cualquier momento. Para ideas sobre cómo hacer esto, examinaría el modelo REST. Si desea obtener una mejor idea sobre el uso de REST con android, sugiero este video from Google IO. Hasta hoy, es uno de mis favoritos.
En cuanto a enviar una señal desde el servidor para iniciar una actividad, esta es una posibilidad en cierta medida. Necesitará tener algo escuchando en el dispositivo, muy probablemente un servicio. Podría hacer que su servicio haga una encuesta larga y, por lo tanto, simplemente sentarse allí esperando una respuesta. Cuando es obtener la respuesta del servidor, podría entonces hacer un
Context.startActivity(intent)
Cuando la intención es la intención explícita especificando la actividad que desea iniciar. Dicho esto, un servicio también se puede eliminar si los recursos escasea en el dispositivo. Además de eso, la conexión a internet podría perderse en cualquier momento (estos son teléfonos móviles y las personas a menudo toman los teléfonos celulares en lugares donde no tienen conectividad a Internet).
La conclusión es que los dispositivos no están diseñados para ser 100% confiables en términos de conectividad. Lo más inteligente que puede hacer es cambiar las especificaciones de su aplicación para que sean más tolerantes a las fallas.
Puede parecer franco, pero no hay mucho más que decir aparte de "No hagas esto. No hagas esto nunca". De manera más constructiva, diría que si haces las cosas bien, deberías poder llevar tus cosas a un segundo plano y nunca molestar al usuario con ellas. Recuerda, KISS, no es solo una banda con un ejército. Es una hermosa filosofía. Que sea simple estúpido. Tal vez quieras echar un vistazo a este video, es uno de mis favoritos y podría ayudarte a tener un estado de ánimo diferente. ¿Eso es útil?
OK, eso tiene sentido. ¿Podrías arrojar algo de luz sobre el problema de volver a poner mi aplicación al frente? – TomBomb
Edité mi respuesta para dirigirle más preguntas. –
Gracias Kurtis, esto es de gran ayuda. Estoy trabajando para no confiar totalmente en que la actividad/servicio esté vivo en todo momento. Estoy comenzando la actividad como se describió anteriormente, sin embargo, mi problema es que necesito que mi aplicación vuelva a enfocarse una vez que se inicia el intento. Si el usuario está en otra aplicación cuando llamo a startActivity(), mi aplicación permanece en segundo plano. ¿Alguna idea? – TomBomb