Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo puede una aplicación congelar Android OS

Estoy desarrollando una aplicación de Android que está causando que el sistema operativo se congele.

Mi pregunta es bastante simple, pero después de largas búsquedas no he llegado más cerca de una respuesta.

La pregunta es, ¿cómo puede una aplicación que es sandboxed, causar todo el sistema operativo Android (4.0.4, 4.1.1, 4.1.2) para congelar?

Específicamente, todo el sistema operativo se congela. No logcat, no adb, nada! Es tan congelado como un sistema operativo puede obtener. El dispositivo es un Samsung Galaxy Tab 2. La aplicación utiliza el UsbManager y la biblioteca del proyecto usb-serial-for-android . Aunque la biblioteca puede usar el NDK, mi aplicación no. Esencialmente, la aplicación se comunica en serie con una placa de propiedad, recibiendo datos y enviando comandos en serie. Esto se hace en un hilo de trabajo que se elimina de esta manera:

 try { thread.interrupt(); thread.join(); while(thread.getState() != Thread.State.TERMINATED){ // wait until thread finishes } } catch (InterruptedException e) { e.printStackTrace(); } 

Todo funciona bien, es decir, hasta que se produce la congelación – cuando desconecto el cable USB o instruyo el objeto de la biblioteca a desconectar. De cualquier manera, todo el sistema operativo se vuelve inestable y se congelará de inmediato o al conectar el usb de nuevo (placa o computadora). He publicado este problema de congelación en el proyecto usb-serial-for-android pero aún no he recibido ningún comentario. Creo que estoy siguiendo los protocolos apropiados al desacoplar el usb.

Entiendo que muchas cosas pueden salir mal – mi aplicación puede bloquear et. Alabama. Pero de nuevo, ¿cómo una aplicación en caja de seguridad bloquea el sistema operativo? No parece que sea muy limitado si puede hacerlo.

ACTUALIZAR

Tengo después de mucha experimentación encontró que al eliminar el thread.interrupt(); Línea que funciona sin estrellar la aplicación o congelar el sistema operativo. Aún congela el SO si el USB está desenchufado sin primero desmontarlo.

Todavía deseo entender cómo una aplicación en caja de arena puede congelar todo el sistema operativo sin embargo. Hay comentarios aquí que eluden a una respuesta, pero no son una sola respuesta.

One Solution collect form web for “¿Cómo puede una aplicación congelar Android OS”

¿Dónde se encuentra su código de ejemplo?

Debe estar en un hilo de UI, potencialmente bloqueando la interacción del usuario.

¿También está recibiendo mensajes ANR antes de la congelación?

  thread.join(); 

Bloqueará indefinidamente. Vea la documentación Thread.join () .

Además, lo siguiente parece un bucle de ocupado para mí.

¿Qué haces en el comentario? Si nada, entonces el lazo girará como loco (piense while (true) { } ).

  while(thread.getState() != Thread.State.TERMINATED){ // wait until thread finishes } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.