Tôi đang thử nghiệm phương thức onRestoreInstanceState và khi nào (chính xác) nó được gọi. Vì vậy, tôi đã làm theo các bước sau:Tại sao không onRestoreInstanceState được gọi sau onStart?
- bắt đầu hoạt động của tôi.
onCreate -- > onStart --> onResume
đã được gọi. - nhấn nút Home trên trình giả lập.
onPause --> onSaveInstanceState --> onStop
được gọi. - Nhấp vào biểu tượng trong trình khởi chạy và khởi chạy lại hoạt động của tôi.
onRestart --> onStart --> onResume
đã được gọi.
mã java của tôi:
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");
}
}
Từ các tài liệu: Instead of restoring the state during onCreate() you may choose to implement onRestoreInstanceState(), which the system calls after the onStart() method .
Vì vậy onRestoreInstanceState được gọi
- sau hoạt động này đã bị phá hủy
onPause --> onStop --> onDestroy
sau đóonCreate --> onRestoreInstanceState --> onResume
(do xoay màn hình cho ví dụ) - sau hoạt động này đã được ngừng lại
onPause --> onStop --> onRestart --> onStart --> onRestoreInstanceState --> onResume
(do biểu tượng nhà cách nhấn ví dụ)
Nhưng tại sao nó không được gọi sau khi onStart?
Cảm ơn
".. hệ thống gọi * sau * phương thức onStart()". - Vui lòng viết tiêu đề liên quan đến vấn đề. – user2864740
@ user2864740, tiêu đề câu hỏi của tôi đã được chỉnh sửa "Tại sao không ..." –
Sau bước hai, nhấn nút home lần nữa và nhấp vào trong ứng dụng của bạn đã mở. Hãy thử chạy ứng dụng của bạn trên điện thoại thông minh. –