Tôi đã bị lỗi này một lúc. Làm cách nào để xử lý đúng các thay đổi hướng màn hình trong khi tôi đang chạy riêng Thread
/AsyncTask
? Hiện nay, tôi cóXử lý các thay đổi hướng màn hình khi có AsyncTask chạy
android:configChanges="orientation|keyboard|keyboardHidden"
trong AndroidManifest.xml
của tôi, nhưng đó là not really encouraged:
Lưu ý: Sử dụng thuộc tính này nên tránh và sử dụng chỉ như là một cuối cùng khu nghỉ mát. Vui lòng đọc Xử lý các thay đổi thời gian chạy để biết thêm thông tin về cách xử lý đúng cách khởi động lại do thay đổi cấu hình.
Ngoài ra, trong 2.3 giả lập, nó hoạt động khi chuyển sang landscape
, nhưng chuyển đổi trở lại portrait
thất bại.
Bây giờ, lý do tại sao tôi sử dụng configChanges
là vì khi người dùng chuyển hướng, tôi có thể đang chạy một số hoạt động mạng, và tôi không muốn nó dừng lại.
Có cách nào khác để thực hiện việc này hay không, có cách nào sửa chữa 2.3 để chuyển về chân dung không?
tôi biết về onRetainNonConfigurationInstance
, nhưng tôi không chắc chắn nó sẽ là một ý tưởng tốt để "cứu" các trường hợp AsyncTask
, chủ yếu là bởi vì lớp mà kéo dài AsyncTask
không phải là tĩnh (vì vậy nó được gắn liền với Activity
) - và nó cần phải được, bởi vì trong onPostExecute()
nó gọi phương thức từ ví dụ Activity
.
Rất đẹp, đơn giản hơn nhiều so với việc triển khai 'Dịch vụ'. Cảm ơn. – Felix
@ Tôi biết điều này đã được một thời gian kể từ khi đăng bài nhưng tôi đang cố gắng để làm như vậy nhưng tôi không hoàn toàn hiểu những gì bạn có nghĩa là bởi "Để được thông báo khi nhiệm vụ đã hoàn thành hoạt động đã thực hiện một giao diện mà nó sử dụng để đăng ký chính nó vào lớp Ứng dụng. " Bất kỳ cơ hội của một ví dụ? (Tôi mới sử dụng java và android1) – Bex
Xin lỗi, tôi không có ví dụ về mã. Nhưng hãy xem [mẫu người quan sát] (http://stackoverflow.com/questions/2483644/rosetta-stone-observer-pattern) Tôi hy vọng bạn sẽ hiểu ý tôi với "đăng ký" (cập nhật()) và "thông báo" (addObserver()). – Flo