2011-07-13 27 views

Trả lời

5

Các doc nói

Phương pháp này được gọi trước khi một hoạt động có thể bị giết chết để khi nó quay trở lại một thời gian trong tương lai nó có thể khôi phục trạng thái của nó.

1

Phương pháp này đã không gọi khi người dùng ép "trở lại" nút, đây là một trong những trường hợp đó ..

1

onSaveInstanceState được gọi khi hoạt động bao giờ được ra khỏi veiw .. như khi u nhấn phím nhà, onSaveInstanceState được gọi.

+1

Nó không được gọi là _every_ thời gian hoạt động rời khỏi chế độ xem. Giống như khi người dùng nhấn trở lại để rời khỏi hoạt động. – Jazzer

7

onSaveInstanceState() sẽ được gọi theo mặc định cho một cái nhìn nếu nó có một id.

google cho biết: "Triển khai mặc định sẽ quản lý hầu hết trạng thái giao diện người dùng cho mỗi bạn bằng cách gọi onSaveInstanceState() trên mỗi chế độ xem trong cấu trúc phân cấp có id".

Thông tin thêm here.

+0

Mặc dù đây là thông tin chính xác nhưng nó không trả lời được câu hỏi. – Jazzer

5

Cũng lưu ý rằng onSaveInstanceState có thể được gọi vào một mảnh trực tiếp sau khi onCreate (onCreateView, onActivityCreated, onStart, và onResume sẽ KHÔNG được gọi là), nếu các mảnh được gắn vào một hoạt động nhưng không được hiển thị, sau đó bị phá hủy. Vì vậy, bạn cần phải chắc chắn rằng tất cả mọi thứ bạn tham khảo trong onSaveInstanceState được khởi tạo trong onCreate, nếu không bạn có nguy cơ một NullPointerException.

2
  • onSaveInstanceState() được gọi khi có thay đổi hướng hoặc người dùng nhấn nút trang chủ.
  • Nếu có một hoạt động khác trước hoạt động và hệ điều hành giết hoạt động ẩn để giải phóng bộ nhớ (hoặc khi cần thiết ở nơi khác), thì onSaveInstanceState() được gọi để hoạt động có thể lưu thông tin trạng thái của nó được khôi phục bằng cách sử dụng onRestoreInstanceState() khi người dùng bắt đầu hoạt động đó vào lần tiếp theo.
  • Chế độ xem mặc định của Android lưu trạng thái của chúng qua cuộc gọi tới Chế độ xem.onSaveInstanceState được khôi phục bằng việc thực hiện mặc định của onRestoreInstanceState

Theo doc

Nếu người dùng tương tác với một hoạt động và nhấn nút Back hoặc nếu phương pháp kết thúc() của một hoạt động được gọi là , hoạt động là bị xóa khỏi ngăn xếp hoạt động hiện tại và được tái chế. Trong trường hợp này không có trạng thái mẫu để lưu và phương thức onSaveInstanceState() không được gọi.

Nếu người dùng tương tác với một hoạt động và nhấn nút Home, trạng thái thể hiện hoạt động phải được lưu. Phương thức onSaveInstanceState() được gọi. Nếu người dùng khởi động lại ứng dụng, nó sẽ tiếp tục hoặc khởi động lại hoạt động mới nhất. Nếu nó khởi động lại hoạt động, nó cung cấp gói với lưu dữ liệu vào các phương thức onRestoreInstanceState() và onCreate().

Nếu bạn ghi đè onSaveInstanceState() và onRestoreInstanceState() bạn nên gọi việc thực hiện siêu của nó, bởi vì các quan điểm mặc định của Android lưu trữ dữ liệu của họ thông qua một cuộc gọi đến View.onSaveInstanceState từ onSaveInstanceState() phương pháp của Hoạt động. Ví dụ: EditText lưu trữ nội dung của nó thông qua cuộc gọi mặc định của phương thức này.

Các vấn đề liên quan