2010-11-19 18 views

Trả lời

8

chuyện này dường như để trả lời nó : http://groups.google.com/group/android-developers/browse_thread/thread/f47af26b696af2e2. Tìm bài viết bắt đầu bằng "Có và không" và một số bài viết trước đó.

Câu trả lời là dương: có, sau khi khởi động lại một Hoạt động bị tắt bởi hệ điều hành, getIntent() sẽ trả về Intent với các tính năng bổ sung giống như gốc.

Tuy nhiên, nếu một số chuyên gia Android có thể xác nhận, tôi rất vui khi biết điều đó. :)

0

Sobear,

Câu trả lời cho câu hỏi là "không, nó không". Có một số lý do khác nhau cho việc này. Đầu tiên, hãy rehash cách Activity hoạt động (Tôi biết bạn biết điều này, nhưng tôi đang minh họa một điểm).

  1. Để bắt đầu Hoạt động, Mục đích được tạo. Mục đích này có thể là từ Biểu tượng ứng dụng trên Màn hình chính, từ một thành phần của Ứng dụng hiện đang chạy hoặc thậm chí từ một thành phần khác của một Ứng dụng khác miễn là họ có quyền khởi chạy ứng dụng đó.

  2. Mục đích được gửi tới Android và Android cố gắng giải quyết nó bằng cách gửi cho ứng dụng hoặc bằng cách truy vấn người dùng nếu nó không thể tự giải quyết được.

  3. Khi ứng dụng khởi động, ứng dụng sẽ giữ nguyên Intent đã bắt đầu cho phép kiểm tra bảo mật, theo dõi lại, v.v. Nó cho phép nhà phát triển và người dùng đảm bảo rằng đây là những gì họ thực sự muốn làm ... Mục đích này vẫn duy trì trong suốt vòng đời của Hoạt động và bất kỳ hoạt động nào khác mà Hoạt động chuyển đến.

  4. Người dùng thực hiện một số nội dung, bị phân tâm và chuyển sang các Hoạt động khác. Ứng dụng vẫn tiếp tục cho đến khi bộ nhớ yếu.

  5. Bộ nhớ sắp hết và Android sẽ giết Hoạt động. Hoạt động mất Intent (trừ khi nó được lưu bằng cách nào đó).

  6. Người dùng thấy rằng Hoạt động đã chết và quyết định khởi động lại. Android tạo Mục đích mới để bắt đầu Hoạt động -> quay lại bước 1.

Vì mục đích mới được yêu cầu khởi động lại ứng dụng, ý định cũ không còn được khóa cho Hoạt động nữa. Khi có hay không nó được thu thập vào Garbage, tôi không chắc chắn khi điều này xảy ra, nhưng nó không thể truy cập. Nếu lưu trữ Extras của bạn là mối quan tâm của bạn, chỉ có một cách để làm điều này (một số triển khai có thể, tất nhiên). Intent và Extras phải được lưu trữ theo một cách nào đó. Điều này sẽ không ảnh hưởng đến hàm getIntent(), nhưng bạn có thể tạo một hàm getOriginalIntent() cá nhân để dựa vào nó. Từ đó, có một số tùy chọn ... Ví dụ, bạn có thể khởi động lại Hoạt động với ý định ban đầu và THEN getIntent() sẽ làm việc đó ...

FuzzicalLogic

+0

Nhưng tôi đã thử nghiệm nếu hoạt động bị giết os sẽ tự động lưu các tính năng bổ sung cho bạn và trả lại với lệnh gọi getIntent(). GetExtras() ' –

0

Vâng, bạn luôn có thể tự mình làm thử nghiệm đơn giản, bằng cách gắn cờ "không giữ hoạt động" cờ trên, trong tùy chọn nhà phát triển.

Nếu cờ đó bật, bất cứ khi nào bạn thoát khỏi ứng dụng (nói, nhấp vào nút trang chủ), Hệ điều hành sẽ hủy hoạt động và khi bạn quay lại ứng dụng, hoạt động trước đó sẽ được tạo lại.

Thử nghiệm của tôi nói với tôi rằng getIntent() sẽ luôn có cùng dữ liệu sau khi hoạt động giải trí.

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