2011-11-15 26 views
22

Trong trường hợp của tôi, có một trường hợp trong đó tôi cần đảm bảo rằng hoạt động này chỉ chạy một lần tại một thời điểm.Làm thế nào để giữ một cá thể hoạt động đơn lẻ nhưng có thể cập nhật chế độ xem?

Tôi thấy nếu tôi đặt LauchMode hoạt động, tôi có thể đạt được mục tiêu ví dụ duy nhất, nhưng nó sẽ không cập nhật chế độ xem hoạt động.

Hoạt động này được khởi chạy bởi startActivityForResult và chúng tôi gửi URI với mục đích hoạt động.

Hãy thảo luận với trường hợp nhất định này:

  • gallery - lauch hoạt động này với imageA.

  • máy ảnh - tán thành hoạt động này với imageB.

Yêu cầu của tôi không phá hủy hoạt động cũ, nhưng hoạt động vừa nhận được thông tin ý định mới sẽ làm mới chế độ xem.


Tôi đã tìm thấy phương pháp mới, onNewIntent. Phương pháp này có thể làm mới ý định trước khi tiếp tục. Tôi sẽ thử nó.

+0

Tại sao điều quan trọng là hoạt động duy trì sự sống? Tôi nghĩ điều đó là không thể. –

+0

điều này là bởi vì nếu có hai trường hợp hoạt động, sẽ gây ra một số vấn đề trong ứng dụng của chúng tôi. vì vậy tôi cần phải chắc chắn rằng, nó là trường hợp duy nhất. – johnsonYu

Trả lời

60

Bạn có thể có Hoạt động có thuộc tính tệp kê khai của singleInstance. Ngay sau khi hoạt động được khởi động lại, onResume được gọi. Bạn có thể cập nhật chế độ xem với hình ảnh mới và vô hiệu hóa Chế độ xem cũ hơn.

<activity .. 
     android:launchMode= "singleInstance" /> 
+0

thông tin hình ảnh của tôi được lưu trữ trong Intent.but tôi nhận được thông tin ý định với getIntent() là thông tin cũ. có lẽ đó là câu hỏi quan trọng. cảm ơn bạn đã trả lời. – johnsonYu

+2

sử dụng trênNewIntent() có thể cập nhật ý định. – johnsonYu

+0

Có cách nào để đặt hoạt động trong ngăn xếp hoạt động tác vụ trong đó hoạt động bắt đầu hoạt động hay không. ; phương pháp này sẽ bắt đầu một nhiệm vụ mới với hoạt động. – johnsonYu

28

Trong tệp kê khai của bạn, hãy sử dụng android:launchMode="singleTask" thay vì android:launchMode="singleInstance". Sử dụng singleInstance chỉ trả về phiên bản hiện tại nếu nó ở trên cùng của ngăn xếp. singleTask, mặt khác, quay lại phiên bản hiện tại của hoạt động vì nó luôn ở gốc của tác vụ.

Sau đó, khi phiên bản của bạn được khởi chạy, hãy ghi đè onNewIntent để cập nhật giao diện người dùng của bạn theo mục đích mới.

Tham khảo the Andorid documentation để biết chi tiết.

+4

Tôi đồng ý rằng cả hai chế độ chỉ cho phép một phiên bản của Hoạt động nhưng việc giải thích sự khác biệt của bạn là sai. – ben75

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