2010-11-02 70 views
7

Khi tôi thay đổi hướng ứng dụng khởi động lại và tôi bị mất dữ liệu hiện tại. Tôi đang sử dụng nhóm hoạt động có nhiều hoạt động khi tôi thay đổi ứng dụng hướng khởi động lại từ hoạt động chính.Ứng dụng Android khởi động lại trên thay đổi hướng

có thể tránh ứng dụng này khởi động lại khi thay đổi hướng?

Bất kỳ ai biết xin vui lòng cho tôi biết ..

Trả lời

9

Android khởi động lại các hoạt động bất cứ khi nào định hướng thay đổi theo mặc định.

Bạn sẽ cần lưu dữ liệu/trạng thái của mình bằng cách gọi onSaveInstanceState() trước khi Android phá hủy các hoạt động.

Có một cái nhìn ở đây: Handling Runtime Changes

SO question này cũng tỏ ra là một đọc tốt trong việc tìm hiểu làm thế nào bạn có thể đối phó với nó.

Bạn có thể ngăn điều này bằng cách thêm android:configChanges="orientation" vào hoạt động của mình trong tệp AndroidManifest.

Nguồn: http://developer.android.com/guide/topics/manifest/activity-element.html#config

+1

Tôi đã sử dụng các nhóm hoạt động và trên mỗi hoạt động hoặc nhóm khởi chạy ứng dụng của tôi giao tiếp với máy chủ và tìm nạp dữ liệu. Vì vậy, không thể xử lý thay đổi cấu hình của mỗi hoạt động. Thay vào đó tôi giữ định hướng cố định và sử dụng người nghe để thay đổi định hướng và sau đó sử dụng XML riêng biệt cho cảnh quan và chân dung. Điều này tránh khởi động lại ứng dụng và lưu dữ liệu của tôi quá. – sachin

1

Đây là cách hoạt động. Có một cách để làm cho nó không làm điều đó, nhưng bạn nên theo dõi vòng đời và có thể xử lý hoạt động khởi động lại một cách duyên dáng. Điều này đã được yêu cầu ở đây nhiều lần.

1

Bạn có thể nói hệ thống để bỏ qua những thay đổi như sau:
<activity android:name="SomeActivity" android:configChanges="keyboardHidden|orientation">

nhưng tôi sẽ đề nghị không làm điều đó bởi vì đây thường là một dấu hiệu của các vấn đề tiềm ẩn mà vẫn chưa xuất hiện.

Lời khuyên của tôi là bạn chỉ cần thêm một lớp mới sẽ xử lý việc tiếp tục tất cả các hoạt động dài hoặc bất kỳ sửa đổi hoạt động nào.

+0

Tôi biết rằng câu trả lời là cũ ('10) nhưng đây phải là câu trả lời đầu tiên và được chấp nhận – HAlexTM

1

Có một số thông tin tốt trong tài liệu API về lý do hoạt động hiện tại bị hủy và được xây dựng lại. Tôi thấy nó rất sáng suốt lần cuối cùng tôi làm việc liên quan.

Trừ khi bạn chỉ định khác, thay đổi cấu hình (như thay đổi hướng màn hình [...]) sẽ làm cho hoạt động hiện tại của bạn bị hủy, trải qua quá trình vòng đời hoạt động bình thường của onPause(), onStop() và onDestroy() khi thích hợp. Nếu hoạt động ở mặt trước hoặc hiển thị cho người dùng, khi onDestroy() được gọi trong trường hợp đó thì phiên bản mới của hoạt động sẽ được tạo, với bất kỳ savedInstanceState nào đã tạo trước đó từ onSaveInstanceState (Gói).

http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges

10

nếu Android của bạn: targetSdkVersion = "12" hoặc ít hơn

android: configChanges = "định hướng | keyboardHidden">

nếu Android của bạn: targetSdkVersion = "13" hoặc thêm

android: configChanges = "orientation | keyboardHidden | screenSize">

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