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


Realizar una pausa de actividad que no se reanuda después de volver a crear el método

Tengo un proyecto para HoneyComb y obtengo un error después del uso del método recreate () en el método onResum () en mi actividad principal.

11-10 22:05:42.090: E/ActivityThread(1917): Performing pause of activity that is not resumed: {com.blogspot.honeyapp/com.blogspot.honeyapp.Main} 11-10 22:05:42.090: E/ActivityThread(1917): java.lang.RuntimeException: Performing pause of activity that is not resumed: {com.blogspot.honeyapp/com.blogspot.honeyapp.Main} 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2517) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2505) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2483) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.access$700(ActivityThread.java:122) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1031) 11-10 22:05:42.090: E/ActivityThread(1917): at android.os.Handler.dispatchMessage(Handler.java:99) 11-10 22:05:42.090: E/ActivityThread(1917): at android.os.Looper.loop(Looper.java:132) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.main(ActivityThread.java:4123) 11-10 22:05:42.090: E/ActivityThread(1917): at java.lang.reflect.Method.invokeNative(Native Method) 11-10 22:05:42.090: E/ActivityThread(1917): at java.lang.reflect.Method.invoke(Method.java:491) 11-10 22:05:42.090: E/ActivityThread(1917): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 11-10 22:05:42.090: E/ActivityThread(1917): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 11-10 22:05:42.090: E/ActivityThread(1917): at dalvik.system.NativeStart.main(Native Method) 

Creo un nuevo proyecto para mostrarte lo que pasa.

Puede encontrarlo en http://xp-dev.com/svn/RecreateError/trunk/

No sé cuál es mi avería pero comienzo la actividad y registro el ciclo de vida de la actividad. El resultado:

 11-10 22:26:45.960: I/seasons log(2274): onCreate() 11-10 22:26:45.990: I/seasons log(2274): onStart() 11-10 22:26:45.990: I/seasons log(2274): onResume() 

Ahora presiono el icono de barra de acción para activar la bandera de recrear y cambiar a otra aplicación …

 11-10 22:30:26.390: I/seasons log(2274): onPause() 11-10 22:30:27.080: I/seasons log(2274): onStop() 

Y volver a mi Actividad con recrear bandera activada lo que se hará recrear () en onResume ().

 11-10 22:33:05.500: I/seasons log(2274): onCreate() 11-10 22:33:05.510: I/seasons log(2274): onStart() 11-10 22:33:05.510: I/seasons log(2274): onResume() 11-10 22:33:05.510: I/seasons log(2274): onPause() 

OnPause? Pero mi Actividad es visible, ¿qué estoy haciendo mal? El estado correcto no es onResume ()?

Y ahora si cambio a otra aplicación consigo el error.

Gracias por su tiempo y lo siento por mi mal inglés.


En este momento no entiendo cómo aplicaciones como File Manager HD hacen esta acción.

Dos Actividades: Actividad Principal A, Actividad B con PreferenceFragment como contenido principal.

Una opción que cambia el tema entre Holo y Holo.Light, Actividad B cambia con un método OnSharedPreferenceChangeListener en PreferenceFragment pero cuando volvemos a la actividad principal el método recreate() en onResume() falla, ¿cómo hacerlo?

Estoy confundido. Lo siento.

  • Actividad y Fragmento Ciclos de Vida y Cambios de Orientación
  • ¿Cuál es el orden correcto de llamar métodos de superclase en los métodos onPause, onStop y onDestroy? ¿y por qué?
  • ¿Se llama onPause () o onStop () incluso si el teléfono muere por falta de energía?
  • Diferencia principal entre el Manifiesto y el Registro Programático de BroadcastReceiver
  • La aplicación se reinicia en lugar de continuar
  • Cómo detener y reanudar un servicio
  • Cuando se llama onRestoreInstanceState?
  • ¿Puede Android Service superar el objeto de aplicación?
  • 3 Solutions collect form web for “Realizar una pausa de actividad que no se reanuda después de volver a crear el método”

    Para ello, utilice un controlador:

     Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what==MSG_RECREATE) recreate(); } }; @Override protected void onResume() { if(condition) { Message msg = handler.obtainMessage(); msg.what = MSG_RECREATE; handler.sendMessage(msg); } } 

    Esto no se bloqueará más.

    No sé si esto es la causa de sus problemas, pero no se comparan Cuerdas como esta en Java;

     protected void onResume() { ... if (recreate == "S") { recreate = "N"; recreate(); } 

    Utilice if ("S".equals(recreate)) lugar.

    Usted nunca debe estar llamando onPause onCreate onResume etc por su cuenta. No deberías usar recreate() para lo que quieres hacer, poner el código de inicialización en otro lugar si necesita actualizarse. Además, utilice un entero para almacenar el estado del programa en lugar de una cadena, luego declare algunas variables finales a la referencia, por ejemplo

     public final int RECREATE_ON = 1; public final int RECREATE_OFF = 2; private int recreate = RECREATE_OFF; ... if(recreate==RECREATE_ON){ recreate(); } 

    Recuerde lo que recreate () está haciendo:

    Haga que esta actividad se vuelva a crear con una nueva instancia. Esto resulta esencialmente en el mismo flujo que cuando se crea la actividad debido a un cambio de configuración: la instancia actual pasará por su ciclo de vida a onDestroy () y se creará una nueva instancia después de ella.

    Esta es la razón por la que está recibiendo el mensaje onPause .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.