Próbuję przetestować metodę onRestoreInstanceState i kiedy (dokładnie) jest wywoływana. Dlatego wykonałem następujące kroki:Dlaczego usługa onRart nie jest wywoływana onRestoreInstanceState?
- rozpocznij moją działalność.
onCreate -- > onStart --> onResume
zostały wywołane. - naciśnij przycisk Home na emulatorze.
onPause --> onSaveInstanceState --> onStop
zostały wywołane. - Kliknij ikonę w programie uruchamiającym i ponownie uruchom moją aktywność.
onRestart --> onStart --> onResume
zostały wywołane.
Mój kod Java:
package com.test.demostate.app;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
public class MainActivity extends ActionBarActivity {
private int visiters=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("TAG","onCreate");
}
@Override
protected void onPause() {
super.onPause();
Log.d("TAG","onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d("TAG","onStop");
}
@Override
protected void onStart() {
super.onStart();
Log.d("TAG","onStart");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("TAG","onRestart");
}
@Override
protected void onResume() {
super.onResume();
visiters++;
Log.d("TAG","onResume");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("visiters",visiters);
Log.d("TAG",visiters+" visiters was saved ");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
visiters=savedInstanceState.getInt("visiters");
Log.d("TAG",visiters+" visiters was restored");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("TAG","onDestroy");
}
}
Od docs: Instead of restoring the state during onCreate() you may choose to implement onRestoreInstanceState(), which the system calls after the onStart() method .
Więc onRestoreInstanceState nazywa
- po działalność została zniszczona
onPause --> onStop --> onDestroy
następnieonCreate --> onRestoreInstanceState --> onResume
(ze względu na obracanie ekranu dla przykład) - po zatrzymaniu aktywności
onPause --> onStop --> onRestart --> onStart --> onRestoreInstanceState --> onResume
(ze względu na naciśnięcie ikony domu)
Ale dlaczego nie jest wywoływana po onStart?
Dzięki
"..który system wywołuje * po * metodzie onStart()." - Proszę napisać tytuły związane z problemem. – user2864740
@ user2864740, tytuł mojego pytania został zmieniony "Dlaczego nie jest ..." –
Po kroku drugim, naciśnij ponownie przycisk home i kliknij otwartą aplikację. Spróbuj także uruchomić aplikację na smartfonie. –