2011-02-10 88 views
5

我有一個服務正在執行一些後臺工作人員,然後我需要啓動一個顯示服務處理結果的活動。但有可能活動從服務開始多次。現在,只有在活動不活動的情況下,我纔會啓動此活動。檢查是否在服務中啓動活動

有什麼可能性和如何做到這一點?如果你不介意的話,示例代碼會很好。

謝謝!

回答

2

您應該將您的活動的launchMode更改爲androidManifest.xml文件中的singleTask

此屬性的默認值爲standard,它允許運行任意數量的實例。

「singleTask」和「singleInstance」活動只能開始一項任務。它們始終處於活動堆棧的根部。而且,該設備一次只能保存一個活動實例 - 只有一個這樣的任務。 [...]

「singleTask」和「singleInstance」模式在一個方面也各不相同:「singleTask」活動允許其他活動成爲其任務的一部分。它始終是其任務的根源,但其他活動(必然是「標準」活動和「單一活動」)可以啓動到該任務中。另一方面,「單一實例」活動不允許其他活動成爲其任務的一部分。這是該任務中唯一的活動。如果它啓動另一個活動,那麼該活動將分配給其他任務 - 就好像FLAG_ACTIVITY_NEW_TASK在意圖中一樣。

退房的Android Developers' Guide了更詳細的解釋(報價從那裏爲好)

<activity android:name=".activity.YourActivity" 
    android:launchMode="singleTask" 
    android:alwaysRetainTaskState="true" 
    android:clearTaskOnLaunch="false" 
    android:finishOnTaskLaunch="false"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
相關問題