Helpex - Trao đổi & giúp đỡ Đăng nhập
24

Giả sử bạn muốn bắt đầu một hoạt động mới và chuyển cho nó một số dữ liệu từ hoạt động hiện tại. Nếu dữ liệu thuộc loại nguyên thủy, bạn có thể chỉ cần sử dụng một ý định và thêm phần bổ sung, nhưng bạn sẽ làm điều này như thế nào đối với các cấu trúc dữ liệu phức tạp hơn như danh sách mảng hoặc đối tượng?

24 hữu ích 0 bình luận 21k xem chia sẻ
59

Bạn có một vài lựa chọn:

  1. Bạn có thể bao bọc cấu trúc phức tạp hơn trong một lớp triển khai Parcelablegiao diện, có thể được lưu trữ trong một lớp bổ sung
  2. Bạn có thể bao bọc cấu trúc phức tạp hơn trong một lớp triển khai Serializablegiao diện, có thể được lưu trữ trong một lớp bổ sung
  3. Bạn sử dụng các thành viên dữ liệu tĩnh để chuyển nội dung xung quanh, vì tất cả chúng đều trong cùng một quy trình
  4. Bạn sử dụng bộ nhớ ngoài (tệp, cơ sở dữ liệu, SharedPreferences)
  5. Như người vừa đăng đã lưu ý, hãy sử dụng một thành phần chung, chẳng hạn như tùy chỉnh Applicationhoặc địa phươngService

Những gì bạn không muốn làm là vượt qua những thứ lớn thông qua tính năng bổ sung. Ví dụ: nếu bạn đang tạo một ứng dụng lấy ảnh ra khỏi máy ảnh, bạn không muốn chuyển những ảnh đó vào các tính năng bổ sung - hãy sử dụng thành viên dữ liệu tĩnh (nghe hay quá). Ý định được thiết kế để hoạt động xuyên suốt quá trình, có nghĩa là có một số lượng sao chép dữ liệu được tiếp tục diễn ra, điều mà bạn muốn tránh khi không cần thiết cho những thứ lớn.

59 hữu ích 5 bình luận chia sẻ
2

Một tùy chọn mà tôi biết là lưu trữ dữ liệu bạn đang sử dụng trong một đối tượng Ứng dụng mà tất cả các hoạt động của bạn có thể truy xuất từ ​​ngữ cảnh.

Tôi cũng đã nghe nói về việc sử dụng Google Protocol Buffer để đạt được giải pháp hiệu suất cao hơn

2 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ android data-structures android-activity , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading