2012-04-04 21 views
7

Trên một dự án Android hiện tại, tôi chuyển một số dữ liệu giữa một vài hoạt động. Tôi đã chỉ tò mò nếu có một thực hành tốt nhất về việc gửi dữ liệu giữa các hoạt động. Tôi có một chuỗi sẽ được cập nhật/nối thêm dựa trên kết quả của một hoạt động, sau đó được sử dụng cho một hoạt động chia sẻ trên Facebook sau này. Chuỗi này có nên được đặt làm chuỗi tĩnh toàn cục hay không, sau đó được chia sẻ hoặc tôi nên chuyển chuỗi bằng cách sử dụng intent.PutExtra?Android: Thực tiễn nào tốt hơn, sử dụng chuỗi toàn cầu hoặc ý định với dữ liệu bổ sung?

Chuỗi toàn cục có thể ít mã hơn, nhưng có nghĩa là một biến tĩnh khác. Ngoài ra, ý định Extra là tốt, nhưng có vẻ lặp đi lặp lại vì nó đang được thông qua một vài hoạt động. Dù bằng cách nào cũng có tác dụng, chỉ muốn biết liệu một người có được ưu tiên hơn người khác hay không.

Trả lời

6

Theo quan điểm của tôi, chỉ Intent sẽ hoạt động. Trên Android, ứng dụng của bạn phải được chuẩn bị cho sự kiện bị giết (ví dụ: cuộc gọi video đến đặt nền và cũng tiêu tốn rất nhiều bộ nhớ để ứng dụng nền bị tiêu diệt). Khi Android khôi phục ứng dụng của bạn, ứng dụng sẽ khởi động lại Hoạt động đang hiển thị và gửi lại Intent đã bắt đầu ứng dụng vì chúng được lưu vào bộ nhớ liên tục. Nhưng trạng thái của các lớp khác (bao gồm các biến tĩnh của chúng) không được lưu và nếu bạn không lưu chúng, sẽ bị mất/thiết lập lại.

+0

Cảm ơn bạn! Tôi có cảm giác đó là thứ gì đó dọc theo những dòng đó. –

4

Bạn nên luôn tránh sử dụng các biến toàn cục. Đôi khi bạn sẽ cần đến chúng và trong hầu hết các trường hợp, điều này đến do vấn đề thiết kế. Bạn không nên sử dụng các biến toàn cục "vì ít mã" hơn hoặc mã hóa dễ dàng hơn. BTW chỉ thuộc về các biến tĩnh công cộng không phải là hằng số. Các biến toàn cục làm cho cuộc sống của bạn khó khăn hơn vì

  • Mã của bạn là khó khăn hơn để đọc (nơi không biến mà đến của from..it ra khỏi "phạm vi")
  • Harder để kiểm tra (người đọc biến? ai sẽ thay đổi biến?)
  • không kiểm soát truy cập (không getter/setter)
  • Threading
  • và nhiều nhiều hơn nữa
+0

Đoán tôi sẽ đi với những ý định. Cảm ơn bạn! –

0

Ý định với các dữ liệu thêm. tốt hơn để vượt qua getExtras và hoạt động gốc của bạn đã xác định trước các sự kiện để theo dõi khi hoạt động của trẻ kết thúc.

Các vấn đề liên quan