¿Por qué "onPause" no se llama en la siguiente situación?

Por el documento, se llama "onPause", cuando:

Cuando el sistema está a punto de comenzar a reanudar una actividad anterior.

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

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

Pero cuando presiono la tecla HW-Home y las "aplicaciones recientes" aparecen, la "onPause" no se llama.

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

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

Muchas gracias. BR Henry

Esto realmente sucede porque cuando la tecla Inicio es presionada durante mucho tiempo, no hay actividad que se inicie. La onPause / onStop sólo se llamará si selecciona una de las aplicaciones presentes en la lista "Apps recientes".

Los documentos de onPause () son bastante claros:

Llamado como parte del ciclo de vida de la actividad cuando una actividad va en segundo plano, pero aún no se ha matado.

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 compruebe el botón back logcat.press y luego check.after nuevamente inicie la aplicación y

Pulse el botón de llamada, luego compruebe logcat ahora pulse el botón Atrás y vuelva a comprobar logcat. Usted puede entender fácilmente el ciclo de vida de la actividad.

En una gran cantidad de teléfonos modernos, la lista de aplicaciones recientes es una actividad y onPause . 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 una onPause cuando abra la pantalla de aplicaciones recientes. Tengo curiosidad por ver cuántos dispositivos no te dan la onPause

@Henry por favor Pruebe probando el flujo de la aplicación. Cree una actividad en la que se sobreescriben todos los métodos y el registro de impresión en todos los métodos. El flujo es onCreate >> onStart / restart >> onResume y cuando se pulsa el botón home o se inicia cualquier actividad nueva, entonces se llama onPause >> onStop y si terminas tu aplicación entonces tu aplicación es destruir / terminar así que donde hay confusión.

Esto es lo que los documentos oficiales dicen sobre onPause ()

Llamado como parte del ciclo de vida de la actividad cuando una actividad va en segundo plano, pero aún no se ha matado. La contraparte de onResume ().

Cuando se inicia la actividad B delante de la actividad A, esta devolución de llamada se invocará en A. B no se creará hasta que A's onPause () regrese, así que asegúrese de no hacer nada largo aquí.

Para detalles por favor vea esto .

Cuando se muestran las aplicaciones recientes, se llama al método onStop, el método onStop se llama tan pronto como la interfaz de usuario de la actividad no está enfocada como tal

  • OnDestroy se llama cada vez que se enciende la pantalla
  • usando onResume y onPause
  • Actividad de Broadcastreceiver y Paused
  • Android: ¿En qué circunstancias podría aparecer un diálogo que cause onPause ()?
  • Get onPause & onResume como eventos en el nivel de aplicación / tarea
  • Fake KeyEvent no funciona * exactamente * como el botón "real". ¿Por qué?
  • Android: "Nivel de aplicación" Pausa y reanudar
  • Alternativa garantizada a onDestroy ()?
  • Ejecutar código en el estado onPause () o onStop () de la actividad
  • La celebración de la conexión Bluetooth bluetooth a través de múltiples actividades
  • OnPause / onRestore con savedInstanceState
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.