2015-08-03 68 views
0

我想從服務上下文開始活動。但是我必須使用flag = Intent.FLAG_ACTIVITY_NEW_TASK,它會創建活動的多個實例,因爲它將引發Run-Time-Exception與其他標誌。 我們如何從服務中啓動一個活動,以便不會創建活動的多個實例,如果已經在最近的任務中執行活動,它只會啓動?從服務上下文開始活動

+0

[從活動開始服務]的可能重複(http://stackoverflow.com/questions/2334955/start-a-service-from-activity) –

回答

0

您可以結合不同的標誌,像FLAG_ACTIVITY_CLEAR_TOP

如果設置,以及正在啓動的活動在目前的任務已經運行,然後,而不是推出該活動的一個新實例,所有其他活動的在它之上將被關閉,並且這個意圖將作爲新的意圖被傳遞到(現在在頂部)舊的活動。

...

這種發射方式也可以使用,效果良好結合FLAG_ACTIVITY_NEW_TASK:如果用於啓動任務的根系活力,就會帶來這個任務的當前運行實例的前景,然後將其清除至其根狀態。例如,從通知管理器啓動活動時,這非常有用。

FLAG_ACTIVITY_CLEAR_TASK

如果傳遞給Context.startActivity(一個Intent設置),這個標誌將導致將與該活動相關的任何現有任務的活動開始之前被清除。也就是說,活動成爲空的任務的新根,任何舊的活動都完成了。這隻能與FLAG_ACTIVITY_NEW_TASK結合使用。

與FLAG_ACTIVITY_NEW_TASK。使用哪一個取決於你想要達到的目標。 檢查意向類和Tasks and Back Stack中的標誌的文檔。