Intent
đối tượng được liên tục gắn liền với Activity
, Service
và các thành phần khác miễn là các thành phần đó đang chạy. Chúng không đơn giản biến mất vì bạn đã chuyển sang một ứng dụng khác. Lý do là vì Android có thể giết quá trình này bất cứ lúc nào, nhưng người dùng vẫn có thể muốn quay lại và tiếp tục những gì họ đang làm. Điều này làm cho Intents lý tưởng để lưu trữ hoặc truyền các bit thông tin nhỏ (và đôi khi lớn) thông qua phần Extras.
Phương pháp onNewIntent()
là đặc biệt để xử lý các thành phần ứng dụng bền bỉ hơn và do đó có thể được gọi nhiều lần trong vòng đời của nó nhưng cần theo dõi lý do tại sao nó được gọi (và do đó dữ liệu được gọi) . Cho dù bạn gọi setIntent()
hay không phụ thuộc vào những gì bạn cần làm.
Nếu bạn không quan tâm lý do tại sao nó được gọi sau đó, bạn có thể giữ nguyên bản gốc Intent
bằng cách không gọi setIntent()
. Điều này đặc biệt hữu ích khi Activity
của bạn (hoặc một số thành phần khác) thực hiện điều tương tự bất kể ai đã gọi nó và dữ liệu nào nó cung cấp.
Nếu bạn có nhu cầu trả lời từng sự kiện riêng lẻ, thì bạn phải ít nhất lưu trữ thông tin mới của Intent
. Điều này có nghĩa là bạn có thể tránh setIntent()
, tuy nhiên, không có thành phần nào liên kết với nó sẽ có bất kỳ thông tin nào trong số Intent
trừ khi bạn gửi trực tiếp cho họ. Đây có thể là hành vi mong muốn đối với một ứng dụng không thể đảm bảo được Intent
gốc đã được xử lý hoàn toàn.
Nếu bạn cần trả lời từng mục đích riêng lẻ và Intent
gốc không quan trọng, thì bạn sử dụng setIntent()
. Điều này loại bỏ bản gốc Intent
, vẫn còn trong đó ... và đặt Intent
mới để nếu người dùng di chuyển đi (một lần nữa), họ sẽ quay lại cùng một vị trí.
Lý do tại sao super.onNewIntent()
không xử lý điều này là do các lớp thành phần cốt lõi không thể xác định có hay không Intent
mới quan trọng hơn cũ. Tất cả những gì bạn quan tâm là nó có an Intent
, không phải là gì. Đây là lý do tại sao chúng tôi ghi đè lên các phương pháp như vậy, để chúng tôi xác định những gì là quan trọng và những gì không. Cảm giác chung là các lớp cơ sở như Activity
có thể sử dụng bất kỳ dữ liệu nào chúng ta có, theo bất cứ cách nào nó muốn (trừ khi chúng ta ghi đè và nói cách khác). Tuy nhiên, họ không nên (và thường không thể) loại bỏ dữ liệu của chúng tôi trừ khi chúng tôi nói cụ thể với họ. Đây là một đối số bạn thực sự không muốn có với một số lập trình viên. hehe
Hy vọng điều này sẽ hữu ích.
Nguồn
2011-10-13 04:05:50
Tôi thực sự đánh giá cao câu trả lời này. Mục đích là rất rõ ràng với tôi bây giờ. Chúc mừng! – w3bshark