La aplicación de Android se bloquea, pero no se reinicia – se reanuda desde otro punto de la aplicación
La aplicación en cuestión ya se ha implementado. He descubierto acerca de ACRA , y va a añadir que en para averiguar por qué los accidentes de aplicación están sucediendo.
Mi problema, sin embargo, es que la aplicación se bloquea (el diálogo aparecerá dándole la opción de "Force Close" o "Wait"), pero en lugar de reiniciar la aplicación completamente, se reanuda desde un punto antes de que ocurriera el fallo. Esto causa problemas sin embargo, que sólo se fijan al reiniciar la aplicación (por ejemplo, pérdida repentina de datos, fallos que no tienen sentido, etc.).
- Mi aplicación funciona en android 2.3.3 a Android 3.1 pero se detiene con error en 4.0 +
- Crash en tiempo de ejecución después de migrar a Android Studio (NoSuchMethodError)
- Android comportamiento de la variable estática en la caída de la aplicación
- Extraño dibujo de choque en lienzo en Android 4.0.3. A / libc: Señal fatal 11 (SIGSEGV)
- Comprensión de bloqueos y ANR con Proguard habilitado
Entonces, ¿cómo puedo forzar mi aplicación, una vez que se estrelló, para terminar? (NO reiniciar).
Edit: El mayor problema es que después de la aplicación se bloquea, todos los datos en mi archivo de preferencias desaparece, hasta que la aplicación se reinicia cuando vuelve.
- DatePicker se bloquea en mi dispositivo cuando se hace clic (con una aplicación personal)
- Recyclerview se bloquea al eliminar el último elemento. NullPointerException: android.view.ViewGroup $ LayoutParams android.view.View.getLayoutParams ()
- Android: vista de la cámara: la aplicación se bloquea cuando no utilizo un método obsoleto
- Java.lang.VerifyError en la clase Application para un pequeño porcentaje de usuarios
- Durante la exportación de la aplicación firmada, eclipse se bloquea
- Error inesperado en BaseDexClassLoader
- Ninguna actividad encontrada para manejar Intent, Android
- La aplicación Android falla sin ningún logcat ni ninguna excepción
Android reiniciará la última actividad activa de forma predeterminada. En lugar de forzarlo a reiniciar, la mejor estrategia sería arreglar su aplicación, para que las actividades no se bloqueen o salgan con gracia, incluso si no hay datos disponibles. Si depende absolutamente de algunos datos (extras de intenciones) y no hay valores predeterminados, puede llamar a finish()
si no está disponible o iniciar la actividad main / principal.
Otra forma es tener su propio controlador de excepciones por defecto que vuelve a iniciar la actividad principal, etc. después de reportar el bloqueo usando ACRA (creo que hay una solicitud de funcionalidad para esto en el bugtracker de ACRA).
Sé que esta pregunta es un poco antigua, pero para futuras referencias y google, aquí hay una respuesta completa de otro, difícil de encontrar, stackoverflow pregunta: Android aplicación se reinicia al cerrar / cierre de la fuerza
Crear una clase usada para manejar unCaughtException
public class MyExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler { private final Context myContext; private final Class<?> myActivityClass; public MyExceptionHandler(Context context, Class<?> c) { myContext = context; myActivityClass = c; } public void uncaughtException(Thread thread, Throwable exception) { StringWriter stackTrace = new StringWriter(); exception.printStackTrace(new PrintWriter(stackTrace)); System.err.println(stackTrace);// You can use LogCat too Intent intent = new Intent(myContext, myActivityClass); String s = stackTrace.toString(); //you can use this String to know what caused the exception and in which Activity intent.putExtra("uncaughtException", "Exception is: " + stackTrace.toString()); intent.putExtra("stacktrace", s); myContext.startActivity(intent); //for restarting the Activity Process.killProcess(Process.myPid()); System.exit(0); } }
Luego, en cada subproceso (por lo general, solo tienes uno, a menos que inicies un nuevo subproceso (Async o …, claro que sabes sobre los subprocesos si puedes hacer nuevos;)), establece esta clase como DefaultUncaughtExceptionHandler
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, YourCurrentActivity.class));
Recuerde sin embargo! Hacerlo en el último paso de desarrollar su aplicación, usted tiene que por lo menos intentar manejar todas sus excepciones una por una antes de dejarlas para DefaultUncaughtExceptionHandler
- Kits de herramientas de desarrollo de Android
- Android: ¿Cómo subir el archivo .mp3 y la imagen al servidor http?