2012-03-26 29 views
5

Tôi muốn lưu trạng thái ứng dụng của mình để khi nó được mở lại từ trạng thái đóng, đoạn cuối cùng sẽ hiển thị và ngăn xếp được giữ lại. Tôi muốn bảo quản trạng thái này mỗi khi ứng dụng được đóng lại, không chỉ trên thay đổi hướng hoặc khi hệ thống giết ứng dụng để giải phóng tài nguyên (như trường hợp khi sử dụng onSaveInstanceState()/onRestoreInstanceState().Làm cách nào để lưu lại ứng dụng vào nhóm?

Cho đến nay tôi đã có thể khôi phục lại đoạn trước đó và trạng thái của nó theo kế hoạch bằng cách lưu trạng thái vào SharedPreferences và khôi phục nó sau này, tuy nhiên, điều này không giữ lại phân mảnh, vì vậy khi người dùng tải ứng dụng và nhấn nút quay lại để di chuyển "lên" trong luồng ứng dụng, ứng dụng thoát khỏi thay vì đi lên.

Điều tôi cần tại thời điểm này là có thể truy cập vào ngăn xếp ứng dụng và lưu nó vào nhóm khi cần thiết, nhiều cách hệ thống hoạt động trong onSaveInstanceState(). Tôi đã đọc tài liệu cho FragmentManager.saveFragmentInstanceState() nhưng tôi không chắc chắn cách sử dụng tài liệu này để hoàn thành mục tiêu của mình. Ai đó có thể chỉ cho tôi phương hướng đúng không?

Tôi đang sử dụng triển khai đoạn từ thư viện tương thích Android.

Trả lời

4

Theo như tôi biết hệ thống Android sẽ không cho phép bạn nhận lại ngăn xếp của tác vụ, nó chỉ có thể give you đầu Activity của tất cả các tác vụ đang chạy. Do đó, bạn sẽ cần phải thực hiện cơ chế riêng của bạn trong việc duy trì ngăn xếp lưng Activities. Việc triển khai LocalActivityManager có thể giúp bạn, đặc biệt là phương thức saveInstanceState() của nó. Vì vậy, bạn có thể làm một cái gì đó tương tự và gọi onSaveInstanceState(Bundle) của các hoạt động trong ngăn xếp lại của bạn bất cứ khi nào bạn muốn và sau đó vẫn tồn tại Bundle (trong một tệp, ví dụ). Nếu bạn sử dụng Fragments thì bạn cũng sẽ cần duy trì ngăn xếp lưng của chúng.

Có lẽ, android:alwaysRetainTaskState có thể giúp bạn giải quyết vấn đề của bạn không bị chìm vào việc quản lý ngăn xếp.

+0

'android: alwaysRetainTaskState' có vẻ thú vị. Tôi sẽ báo cáo lại khi tôi đã có thời gian để điều tra. – howettl

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