2012-02-10 13 views
5

Por el documento, "onPause" se llama, cuando:¿Por qué no se llama "onPause" en la siguiente situación?

cuando el sistema está a punto de comenzar la reanudación de una actividad anterior.

En comparación con "onStop", la diferencia es:

llama cuando la actividad ya no es visible para el usuario, porque otra actividad se ha reanudado y está cubriendo éste.

Pero cuando me-pulsado la tecla HW-hogar y las "aplicaciones recientes" aparece, la "onPause" no se llama.

En este momento, no puedo interactuar con la actividad original, , pero todavía está visible.

Estoy confundido por esta situación. Por favor ayuda a explicar.

Muchas gracias. BR, Henry

+0

puede que usted publicar el código en onPause() – Raj

+0

ver esto: http: //stackoverflow.com/a/9190541/265167 –

Respuesta

7

Esto sucede realmente porque cuando se presiona largamente la tecla de inicio, no se inicia ninguna actividad. Solo se llamará a OnPause/onStop si selecciona una de las aplicaciones presentes en la lista "Aplicaciones recientes".

Los documentos de onPause() son bastante claras:

Llamado como parte del ciclo de vida de actividad cuando una actividad se va a un segundo plano, pero tiene (todavía) no han muerto.

+0

Gracias , MobileCushion, Tu respuesta es correcta. El punto es "La aplicación reciente" no se agregará a la pila de aplicaciones, por lo tanto, el resultado. – Henry

-1

Al abrir las aplicaciones recientes onStop el método se llama, el método onStop se llama tan pronto como la interfaz de usuario de la actividad no está enfocado como tal

0

@Henry favor Pruebe usted mismo probando el flujo de la aplicación. Cree una actividad en la que anule todos los métodos e imprima el registro bajo todos los métodos. El flujo es onCreate >> onStart/restart >> onResume y cuando presionas el botón de inicio o comienzas cualquier actividad nueva, llama a onPause >> onStop y, si terminas tu aplicación, entonces tu aplicación es destroy/finish, así que ¿dónde está la confusión?

0

Esto es lo que dice acerca de onPause()

llama como parte del ciclo de vida de actividad cuando una actividad se va en el fondo de los documentos oficiales, pero ha (todavía) no han muerto. La contraparte de onResume().

Cuando se inicia la actividad de B frente a la actividad A, esta devolución de llamada se ser invocada en A. B no se creará hasta de un onPause) devuelve (, por lo asegúrese de no hacer nada muy largo aquí.

Para el detalle please see this.

3
public class MainActivity extends Activity 
{ 
    String tag="my result"; 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Log.v(tag,"I am in oncreate"); 
    } 

    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     Log.v(tag,"I am in onDestroy"); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     Log.v(tag,"I am in onpause"); 
    } 

    @Override 
    protected void onRestart() { 
     // TODO Auto-generated method stub 
     super.onRestart(); 
     Log.v(tag,"I am in onRestart"); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     Log.v(tag,"I am in onresume"); 
    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     Log.v(tag,"I am in onstart"); 
    } 

    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super.onStop(); 
     Log.v(tag,"I am in onstop"); 
    } 
} 

Ejecútelo y revise logcat.presione el botón Atrás y luego marque.después de iniciar nuevamente la aplicación y

Oprima el botón de llamada, luego marque logcat ahora presione el botón Atrás y vuelva a verificar el logcat. puedes entender fácilmente el ciclo de vida de la actividad.

2

En muchos teléfonos modernos, la lista de aplicaciones recientes es una actividad y activa . He probado esto en un par de teléfonos Samsung y LG, y los paquetes son com.android.systemui y com.lge.launcher2 respectivamente.

Dicho esto, parece que no puede confiar en recibir OnPause cuando abre la pantalla de aplicaciones recientes. Tengo curiosidad por ver cuántos dispositivo no le dan la ...

Cuestiones relacionadas