Bối cảnh:Làm thế nào để vượt qua một bộ sưu tập lớn giữa hoạt động (Master-Detail dòng chảy)
Tôi đang thực hiện một ứng dụng mà đọc thông tin về các bộ phim từ một dịch vụ web. Dịch vụ web đó trả về một số thông tin về từng bộ phim (tiêu đề, ngày tháng, url áp phích, đạo diễn, diễn viên, v.v.).
Đó dịch vụ web hỗ trợ pagination, vì vậy những bộ phim được nạp trong gói 100.
Thực hiện:
Ý tưởng là để cho thấy một mạng lưới với tất cả các áp phích. Tự động yêu cầu thêm các mục khi người dùng cuộn xuống.
Khi một mục được nhấp người dùng điều hướng đến một bộ sưu tập với quan điểm chi tiết của bộ phim được lựa chọn, cho phép cuộn qua các chi tiết với một ViewPager.
Vì vậy, ý tưởng là để vượt qua các bộ sưu tập các bộ phim lấy trong lưới đến "DetailedGalleryActivity".
CẬP NHẬT: Cũng cần thiết để lưu trạng thái khi người dùng rời khỏi đoạn đó để xử lý vòng đời của đoạn. Bạn có thể kiểm tra nó cho phép tùy chọn nhà phát triển: Đừng giữ hoạt động
Vấn đề
tiếp cận đầu tiên của tôi là để serialize bộ sưu tập các bộ phim trong một json, và vượt qua nó như là một String thêm để hoạt động.
Nhưng vì danh sách phim lớn, nếu người dùng cuộn nhiều vào lưới, kích thước của json cực kỳ lớn đối với một gói (xem Max size of string data), nhận ngoại lệ thời gian chạy.
Tôi đã kiểm tra một số câu trả lời nói về lưu giữ dữ liệu trong SharedPreferences hoặc lưu trữ liên tục khác trước khi khởi chạy hoạt động chi tiết và sau đó truy cập vào nó từ chi tiết. Tôi thấy giải pháp này lạ vì nó bỏ qua các cơ chế truyền dữ liệu giữa các hoạt động với một giải pháp tùy chỉnh và thủ công.
Cách tiếp cận tốt nhất để giải quyết vấn đề này là gì?
Bạn có thể lưu trữ json của mỗi phim trong một tệp (movie_1, movie_2, v.v.) và sau đó chỉ chuyển id của phim và lấy dữ liệu của phim hiện tại từ tệp. Có lẽ, xóa tất cả các tệp này khi bạn hoàn thành, nên là một ý tưởng hay. – GVillani82
Có lý do cụ thể nào mà bạn muốn sử dụng các hoạt động thay vì phân đoạn không? Nếu bạn sử dụng các đoạn, bạn có thể chỉ cần tải chi tiết về một mảng và chuyển dữ liệu dưới dạng tham số. – Jordan