Ok, tài liệu nêu rõ rằng nó cho phép Hoạt động quản lý vòng đời của con trỏ. Nhưng tôi không thực sự thấy điểm của nó kể từ khi hoạt động bị phá hủy, bất kỳ tham chiếu đến con trỏ mới được tạo ra cũng sẽ bị xóa và sau đó con trỏ chính nó còn lại để chết trong chu kỳ thu gom rác tiếp theo. Vậy tại sao lại bận tâm?Mục đích của startManagingCursor là gì?
Trả lời
Bạn không nên dựa vào con trỏ đang bị bộ thu thập rác phá hủy ... con trỏ thể hiện số lượng tài nguyên đáng kể: tất cả dữ liệu do con trỏ giữ, cộng với kết nối với nhà cung cấp nội dung sở hữu con trỏ có nghĩa là yêu cầu quá trình của nó được lưu giữ trong bộ nhớ.
Trong các phiên bản mới hơn của Android, các bản ghi nhật ký được in nếu trình hoàn thành của con trỏ chạy mà không bị đóng một cách rõ ràng, vì điều quan trọng là các ứng dụng phải đóng con trỏ khi thực hiện với chúng.
Con trỏ được quản lý chú ý đến việc đóng con trỏ khi hoạt động bị hủy, nhưng chúng cũng hoạt động nhiều hơn: chúng sẽ bị vô hiệu hóa và được truy vấn lại khi các hoạt động bị dừng và khởi động lại.
Điều đó nói rằng, tại thời điểm này, bạn nên xem xét các con trỏ được quản lý không được dùng nữa. API trình tải mới tốt hơn rất nhiều và có nhiều cải tiến đối với trải nghiệm người dùng của ứng dụng - nó đảm bảo rằng tất cả các thao tác con trỏ được thực hiện ngoài chuỗi chính (vì vậy không có trục trặc trong tương tác và hoạt ảnh trên giao diện người dùng của bạn) và có thể tuyên truyền dữ liệu con trỏ hiện có trên các trường hợp hoạt động khi một hoạt động được khởi động lại do thay đổi cấu hình thay vì phải tải lại dữ liệu.
Nếu bạn cần chạy trên các phiên bản Android cũ hơn 3.0, bạn có thể sử dụng triển khai Trình tải của thư viện hỗ trợ v4 cho các ứng dụng đó.
Ok, đó là giải thích hợp lý. Nhưng bạn có thể vui lòng giải thích thêm một chút về ý nghĩa của bạn khi bạn nói rằng tôi có thể sử dụng "triển khai thực hiện bộ tải của thư viện hỗ trợ v4" không? Tôi đã kiểm tra rằng lớp CursorLoader chỉ có sẵn ở cấp API 11. Và tôi chỉ nghĩ rằng vì tôi muốn nhắm mục tiêu các cấp thấp hơn, nên không có cách nào để sử dụng lớp đó .. Bạn có nói là tôi có thể không? – Bilthon
@Bilthon: Thư viện tương thích Android có hỗ trợ 'Loader' và' Fragment' quay lại API Level 4. – CommonsWare
Điều này có nghĩa là nếu nhà phát triển xử lý việc đóng Cursors trong onPause() và requeries/initialisation của Cursors trong onResume (), mà startManagingCursor() là không cần thiết, và rằng cách tiếp cận được đề cập có thể được sử dụng trong 3,0 + là tốt? – ataulm
- 1. Mục đích của phiên JMS là gì?
- 2. Mục đích của config.assets.precompile là gì?
- 3. Mục đích của HttpHeaders.TryAddWithoutValidation là gì?
- 4. Mục đích của nguyên mẫu là gì?
- 5. Mục đích của is_uploaded_file() là gì?
- 6. Mục đích của tệp vshost.exe là gì?
- 7. Mục đích của Parse Vexing là gì?
- 8. Mục đích của Array.GetLowerBound (int) là gì?
- 9. Mục đích của tệp pdb là gì?
- 10. Mục đích của String.IsInterned là gì?
- 11. Mục đích của ldexp là gì?
- 12. Mục đích của IntentSender là gì?
- 13. Mục đích của character_set_connection là gì?
- 14. Mục đích của Rake là gì?
- 15. Mục đích của 'var' là gì?
- 16. Mục đích của tệp .edmx là gì?
- 17. Mục đích của layout.xml là gì?
- 18. Mục đích của requestWindowFeature() là gì?
- 19. Mục đích của `__metaclass__ = type` là gì?
- 20. mục đích của Thread.holdsLock (khóa) là gì?
- 21. Mục đích của __cxa_pure_virtual là gì?
- 22. Mục đích của lớp Expression là gì?
- 23. Mục đích của UIWindow là gì?
- 24. Mục đích của thuộc tính-đích là gì?
- 25. JAF là gì? Mục đích của nó là gì?
- 26. Tệp xcscheme là gì? Mục đích của nó là gì?
- 27. Mục đích của thư mục buildSrc của gradle là gì?
- 28. mục đích là gì? "::" trong
- 29. Mục đích của phương thức Expression.Quote của LINQ là gì?
- 30. Mục đích của chỉ thị #line của perl là gì?
Bài đăng này giải thích lý do tại sao nó không được chấp nhận tốt :) http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background.html – user1422551