2011-11-04 124 views
7

如果活動A與任務T1相關,並且活動B與任務T2相關,那麼我如何從活動B完成活動A?如何完成其​​他活動的活動

我需要這個,因爲我的應用程序可以從其快捷方式或通過通知開始。

+0

這兩個活動是同一個應用程序的一部分嗎? – FoamyGuy

+0

是的。活動a正常開始,活動B在應用程序處於後臺通知時啓動 –

+0

我想說使用[服務](http://developer.android.com/guide/topics/fundamentals/services.html),雖然沒有看太多,但它可能對你有用。 – user999717

回答

0

我不知道什麼是最好的方法,但一個方法可以是活動一傳一單和的B獲取它,做它一結束()...

+0

看到我上面的評論 –

+0

你可以刪除從onStop或類似的參考... – Warpzit

3

雖然其他方法可能有效,對我來說最直接的方法是向其他活動發送一個意圖告訴它完成自己。該活動在收到該意圖後調用finish()。

+0

如果我這樣做,我會去這樣的事情。 – FoamyGuy

+0

在應用程序中保留活動引用並不好,因爲操作系統在引用時不會終止該活動。 –

+0

這是不同的。比我的建議,但這隻會工作,如果從意圖開始的活動是運行活動相同,而不是一個新的。當你用意圖調用它時,我不知道它是如何工作的,所以如果不進行測試就不能回答。希望這是有道理的... – Warpzit

1

另一種替代方法是使用通知處理程序中的清除頂部標記來調用活動B,例如

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

如果設置,以及正在啓動的活動在目前的任務已經運行,然後,而不是推出該活動的一個新的實例,都在它上面的其他活動會關閉,這個意圖將作爲新的意圖傳遞給(現在在最上面的)舊活動。

+0

它只清除該任務的所有活動,不影響其他任務的活動 –

2

我需要相同的信息,並玩弄什麼亞爾在這裏說我想出了這個。

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

更改活動以符合您的需求,但FLAG_ACTIVITY_CLEAR_TOP從堆棧中刪除其他活動。