Ok, tôi đã tạo ra một Fragment
với một số giao diện người dùng (vài textbox và các công cụ) và tôi đã sử dụng setRetainInstance
từ Im chạy một AsyncTask
để truy vấn một máy chủ (yêu cầu chỉ có thể được gửi một lần) và tôi cần kết quả của số AsyncTask
. Vì vậy, câu hỏi của tôi là: Có sai sót khi giữ lại toàn bộ đoạn với giao diện người dùng không? Tôi thấy vài ví dụ trong đó mọi người sử dụng thêm Fragment
để sử dụng số setRetainInstance
nhưng .. có điều gì sai khi không sử dụng thêm số đó không ?? Nếu có vấn đề với việc sử dụng setRetainInstance
tại sao lại như vậy? Không thể tìm thấy bất kỳ thông tin nào trong tài liệu về vấn đề này.setRetainInstance đoạn với giao diện người dùng Android
Trả lời
Nếu bạn đang khóa hướng của mình thì bạn sẽ ổn thôi. Nếu không, bạn có thể kết thúc với rò rỉ bộ nhớ nếu bạn giữ lại các widget được liên kết với một cá thể hoạt động cụ thể.
Ngay cả khi bạn sử dụng setRetainInstance(true)
, Phân đoạn của bạn sẽ vẫn tạo lại chế độ xem khi xoay (bạn sẽ nhận được cuộc gọi đến onDestroyView
và sau đó onCreateView
). Miễn là bạn không giữ tham chiếu đến lượt xem qua onDestroyView
, sẽ không có bất kỳ rò rỉ nào của Hoạt động cũ. Cách tiếp cận tốt nhất sẽ rõ ràng là hủy tham chiếu trong onDestroyView
, nhưng mã của bạn trong onCreateView
thường sẽ ghi đè các tham chiếu đó.
Có nhiều ví dụ trực tuyến (bao gồm một số chính thức) nơi mọi người sử dụng một đoạn riêng biệt (không có chế độ xem) để giữ lại dữ liệu. Giả sử những gì tôi đã nói ở trên là chính xác, thì điều này là không cần thiết (để tránh rò rỉ). Trong nhiều trường hợp, bạn có thể kết thúc với mã/kiến trúc sạch hơn nếu bạn sử dụng một đoạn riêng biệt có trách nhiệm chỉ để xử lý dữ liệu và không lo lắng về giao diện người dùng.
Bạn có thể kiểm tra xem bạn có đang bị rò rỉ ngữ cảnh hoạt động sau khi xoay bằng using Eclipse MAT hay không.
- 1. Thiết kế giao diện người dùng Android
- 2. Giao diện người dùng lịch trong android
- 3. Tạo thư viện giao diện người dùng Android có giao diện người dùng tùy chỉnh
- 4. Điều khiển phân đoạn giao diện người dùng tùy chỉnh
- 5. Tại sao đề xuất không giữ lại đoạn với giao diện người dùng?
- 6. Kiểm tra đơn vị Android với giải pháp cập nhật giao diện người dùng AsyncTask và giao diện người dùng
- 7. Giao diện người dùng Kendo với backbonejs
- 8. Chủ đề giao diện người dùng động
- 9. Giao diện người dùng loại hình tròn trong Android?
- 10. Truy cập giao diện người dùng từ JavaScript trên Android
- 11. Sách về thiết kế Giao diện người dùng Android
- 12. Tại sao chỉ có thể chỉ chuỗi giao diện người dùng trong Android cập nhật giao diện người dùng?
- 13. API giao diện người dùng cho libgdx
- 14. Giao diện người dùng Kendo và giao diện người dùng jQuery - kích thước và khung javascript
- 15. Hệ thống plugin với DexClassLoader() và giao diện người dùng
- 16. Phát triển giao diện người dùng giao diện người dùng - WPF
- 17. Cách gỡ lỗi kiểu giao diện người dùng Android
- 18. Công cụ thiết kế giao diện người dùng Android
- 19. Lấy tính toán nặng khỏi Giao diện người dùng Android
- 20. Android - Yếu tố giao diện người dùng tắt màn hình
- 21. Trình tạo giao diện (Trình thiết kế giao diện người dùng) dành cho Android
- 22. Giao diện người dùng khởi động Github? Hoặc mẫu giao diện người dùng giống như github
- 23. Nhân viên đồng bộ với chuỗi giao diện người dùng
- 24. Giao diện người dùng Kendo + Góc
- 25. Trường hợp sử dụng cho Phân đoạn không có giao diện người dùng là gì?
- 26. Thành phần giao diện người dùng ActionScript3?
- 27. Giao diện người dùng thay thế Couchbase
- 28. Giao diện người dùng Java Framework?
- 29. Kiểm tra giao diện người dùng
- 30. Tải lên + Giao diện người dùng jQuery
nhưng không biết các tiện ích được liên kết với Phân đoạn? có lẽ tôi đã hiểu sai cách Fragments hoạt động. – Raykud
Ngay cả khi hướng bị khóa, điều này có thể có vấn đề. Android sẽ tạo lại chế độ xem cho bất kỳ thay đổi cấu hình nào. Trong khi đó, thay đổi cấu hình có thể là xoay màn hình (trường hợp thông thường), thay đổi ngôn ngữ, gắn/tháo bàn phím và các thứ khác. Chăm sóc xoay màn hình không giải quyết được toàn bộ vấn đề. – sstn