El servidor http de Android no es accesible desde otros dispositivos de la red intermitentemente

Estoy utilizando NanoHTTPD para presentar un servidor web en una aplicación para Android. Estoy usando un bloqueo wifi para mantener la red viva, y un bloqueo de la CPU para mantener la CPU despierta, y mantenerlo funcionando a través de un servicio de primer plano para que nunca debe morir.

Lo que estoy descubriendo es que será accesible desde otros dispositivos durante media hora, y luego no accesible durante media hora. Cada vez que se vuelve inaccesible, puedo abrir safari en el dispositivo Android y navegar a 0.0.0.0:30000 y verificar que el servidor está en efecto. Y también comprobar para asegurarse de que el wifi está conectado que parece ser.

¿Alguna sugerencia de dónde buscar?

No sé la razón exacta por la que es dejar de funcionar. Hay maneras de mantener el servicio en ejecución, pero pruebe esta línea de código en su actividad, creando si esto le puede ayudar

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

Sugerencias de depuración

Cuando se vuelve inaccesible, ¿puede verificar que la conexión de red funciona realmente? No sólo aparece como "conectado" en la interfaz de usuario, sino que en realidad trabaja con conexiones HTTP a servidores remotos. ¿Su servidor HTTP local de repente se hace accesible desde el control remoto cuando lo hace? Mientras pinchaba, podría ver su servidor de forma remota:

 watch curl http://{android_ip}:3000/ 

¿Mantiene la pantalla encendida o la pantalla se apaga? Podría ser una aplicación con errores del PowerLock.

¿Esto sucede con otros routers inalámbricos? Podría ser un problema con Wifi Power Save Mode (PSM).

  • AlarmManager o Servicio
  • ¿Debería extender la clase Binder o usar un Messenger?
  • ¿Comunicación Bluetooth en hilo o servicio en Android?
  • Uso de Google Analytics en una aplicación de Android con una actividad de interfaz de usuario y un servicio de fondo sin fin
  • Android: Transmisión de datos entre servicio y actividad
  • ASmack como servicio
  • Android Bluetooth desde dentro del servicio
  • Service.onStartCommand () - ¿es posible devolver más de una bandera?
  • Llame a una clase de servicio Una vez al día cuando la aplicación se inicia en android, con menos consumo de batería
  • Cualquier forma de detectar pulsaciones de teclas de volumen o cambios de volumen con el servicio de Android?
  • Android: habilitar y servicios
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.