Sto cercando di capire la differenza tra onPause e onStop.Android: scenario in cui viene chiamato onPause ma non onStop?
Ho letto tutti i diversi forum ma non sono ancora chiaro della differenza. Ho creato una semplice app per provare e verificare quando viene chiamato il metodo. Per questo ho semplicemente inserito logger in ogni metodo.
Dalle mie prove -
- popup non chiamano entrambi i metodi
- commutazione ad un'altra attività chiama entrambi i metodi
- Tirando giù la barra di chiamate di notifica né metodo
ho ha visto solo entrambi i metodi essere richiamati in rapida successione o non essere richiamati affatto. Sto cercando di trovare scenari in cui viene chiamata onPause ma onStop no.
Lo scopo è capire se la definizione di onPause è addirittura richiesta. Se gli scenari in cui viene chiamato solo onPause sono così rari, non ha nemmeno senso scrivere codice separato per onPause. Non dovresti scrivere onStop essere sufficiente?
public class LifecycleActivity extends ActionBarActivity {
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("Rachit", "In Destroy Method");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lifecycle);
Log.d("Rachit", "In Create Method");
}
@Override
protected void onStart() {
super.onStart();
Log.d("Rachit", "In Start Method");
}
@Override
protected void onResume() {
super.onResume();
Log.d("Rachit", "In Resume Method");
}
@Override
protected void onPause() {
super.onPause();
Log.d("Rachit", "In Pause Method");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("Rachit", "In Restart Method");
}
@Override
protected void onStop() {
super.onStop();
Log.d("Rachit", "In Stop Method");
}
}
Sì, ma non ho ancora trovato un caso in cui viene chiamato onPause ma onStop non lo fa. Se vengono sempre chiamati insieme, non avrebbe più senso avere un solo metodo e salvare dati o rilasciare risorse in questo? – Rachit
Il metodo onStop viene chiamato solo quando l'attività non è completamente visibile, mentre il metodo onPause viene chiamato quando l'attività è ancora visibile ma è rimasta sullo sfondo. Ad esempio, quando si visualizza una finestra di dialogo. Il dietro alla finestra di dialogo Attività è in onPause, ma se apri una nuova attività, viene passato dal metodo onPause e onStop @Rachit –
Questo è il problema. Una finestra di dialogo non chiama onPause. Ho provato ad ottenere le finestre di dialogo, ma anche in questo caso la chiamata on non viene chiamata. – Rachit