Pregunta

A pesar de una conexión de red pobres?

Código Específicamente, he escrito que pone en marcha un hilo separado (de la interfaz de usuario) que intenta cargar un archivo a través de HTTP POST. He encontrado, sin embargo, que si la conexión es mala, el procesador se queda atascado en outputstream.close () o httpconnection.getheaderfield () o cualquier lectura / escritura que obliga a los datos por la red. Esto hace que no sólo el hilo a atascarse, pero roba todo el procesador, por lo que incluso la interfaz de usuario no responde.

He intentado bajar la prioridad de la rosca, pero sin éxito.

Mi teoría es que no hay una manera fácil de evitar este comportamiento, por lo que todo el tutorial J2ME instruir a los desarrolladores para crear un ‘... el envío de datos a través de la red’ pantalla, en lugar de simplemente enviar todo en un subproceso de fondo. Si alguien me puede demostrar que estaba equivocado, eso sería fantástico.

Gracias!

¿Fue útil?

Solución

Un aspecto importante es que necesita tener una interfaz de usuario genérico o pantalla que puede visualizarse cuando la llamada a la red en el fondo falla. Es casi una necesidad en cualquier aplicación móvil, J2ME o de otra manera.

Como dijo Honza, que depende del diseño, hay tantas cosas que se pueden hacer, al igual que los datos de precarga en el arranque de aplicaciones o datos de precarga sobre la base de la pantalla que se carga (es decir, la ruta de navegación), o tener un conjunto de datos predeterminado construida en en la aplicación, etc.

Otra cosa que puede probar es un mecanismo integrado de temporizador que vuelve a intentar la descarga de datos después de cierta cantidad de tiempo, y después de abortar decir 5 intentos o 1-2 minutos y la visualización de la pantalla genérica mensaje o error.

Algunos teléfonos en J2ME permiten la detección de modo avión, si es posible, se puede detectar eso y mostrar una pantalla apropiada con prontitud.

También se diseño que ha trabajado para mí es la sincronización de hilos de interfaz de usuario y la red, de modo que ellos no encerrar entre sí (tome este consejo con fuerte dosis de sal ya que he tenido bastantes insectos interesantes sobre algunos Samsung y Sanyo teléfonos debido a esto)

En general hay una buena respuesta para usted, pero diferentes estrategias.

Otros consejos

Es más o menos depende de la forma de escribir el código y donde se ejecuta. En CLDC el concepto de rosca es bastante limitado y si cualquier tema está haciendo un funcionamiento duradero otros hilos podría ser (y son usualy) bloqueado por él también. Usted debe tener esto en cuenta a la hora de diseñar su aplicación.

Es posible dividir los datos del archivo en trozos y luego cargar con varios reintentos en caso de fallo. Esto depende de su estrategia de aplicación. Si su prioridad es para cargar un conjunto de datos a granel con fuera de fracaso. Es necesario tener ensamblar los trozos en el servidor de reconstruir sus datos. Esto puede tener la sobrecarga para hacer conexiones pero la posibilidad es alta para obtener sus datos serán cargados. Si no está cargando archivos al mismo tiempo esto va a funcionar con facilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top