2011-11-04 39 views
7

Nếu Hoạt động A liên quan đến nhiệm vụ T1 và Hoạt động B có liên quan đến nhiệm vụ T2, làm cách nào để hoàn thành Hoạt động A từ Hoạt động B?Cách kết thúc hoạt động từ hoạt động khác

Tôi cần điều này vì ứng dụng của tôi có thể được bắt đầu từ lối tắt hoặc thông báo.

+0

Cả hai hoạt động có phải là một phần của cùng một ứng dụng không? – FoamyGuy

+0

có. hoạt động a đã được bắt đầu bình thường và hoạt động B được bắt đầu khi ứng dụng ở trong thông báo máng nền –

+0

Tôi muốn nói sử dụng [dịch vụ] (http://developer.android.com/guide/topics/fundamentals/services.html), đã không nhìn vào nó nhiều nhưng nó có thể hữu ích cho bạn. – user999717

Trả lời

0

Tôi không chắc chắn những gì sẽ là phương pháp tốt nhất, nhưng một cách tiếp cận có thể để vượt qua Hoạt động từ A đến một singleton và lấy nó từ B và làm một kết thúc() vào nó ...

+0

xem nhận xét của tôi ở trên –

+0

Bạn có thể xóa tham chiếu khỏi onStop hoặc một cái gì đó tương tự ... – Warpzit

3

Trong khi khác phương pháp tiếp cận có thể làm việc, một trong những dường như đơn giản nhất đối với tôi là gửi một ý định đến các hoạt động khác mà nói với nó để kết thúc chính nó. Hoạt động đó, khi nhận được ý định đó, gọi kết thúc().

+0

Nếu tôi đã làm điều đó, tôi sẽ đi với một cái gì đó như thế này. – FoamyGuy

+0

Không được phép giữ các tham chiếu hoạt động trong các ứng dụng của bạn vì hệ điều hành sẽ không giết hoạt động đó trong khi nó có tham chiếu. –

+0

Điều này khác. Hơn đề nghị của tôi nhưng điều này sẽ chỉ hoạt động nếu hoạt động bắt đầu từ mục đích là giống như hoạt động đang chạy và không phải là một hoạt động mới. Tôi không biết làm thế nào mà nó hoạt động khi bạn gọi nó với ý định để không thể trả lời mà không làm bài kiểm tra. Hy vọng điều này có ý nghĩa ... – Warpzit

1

Một giải pháp thay thế khác có thể là gọi Hoạt động B với cờ trên cùng rõ ràng từ trình xử lý thông báo của bạn, ví dụ:

Intent intent = new Intent(context, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
context.startActivity(intent); 

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

Nếu được đặt, và các hoạt động được triển khai vẫn đang chạy trong nhiệm vụ hiện tại, sau đó thay vì tung ra một thể hiện mới của hoạt động đó, tất cả các hoạt động khác trên đầu trang của nó sẽ được đã đóng và Mục đích này sẽ được gửi đến hoạt động cũ (hiện tại trên đầu) như một Mục đích mới.

+0

nó xóa tất cả các hoạt động khỏi nhiệm vụ đó và không ảnh hưởng đến các hoạt động từ một tác vụ khác –

2

Tôi cần thông tin tương tự và chơi xung quanh với những gì bạn nói ở đây tôi đã nghĩ ra điều này.

Intent intent = new Intent(MainActivity.this,HighScoresActivity.class); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent); 

Thay đổi hoạt động để phù hợp với nhu cầu của bạn, nhưng FLAG_ACTIVITY_CLEAR_TOP sẽ xóa các hoạt động khác khỏi ngăn xếp.

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