我有一個服務正在執行一些後臺工作人員,然後我需要啓動一個顯示服務處理結果的活動。但有可能活動從服務開始多次。現在,只有在活動不活動的情況下,我纔會啓動此活動。檢查是否在服務中啓動活動
有什麼可能性和如何做到這一點?如果你不介意的話,示例代碼會很好。
謝謝!
我有一個服務正在執行一些後臺工作人員,然後我需要啓動一個顯示服務處理結果的活動。但有可能活動從服務開始多次。現在,只有在活動不活動的情況下,我纔會啓動此活動。檢查是否在服務中啓動活動
有什麼可能性和如何做到這一點?如果你不介意的話,示例代碼會很好。
謝謝!
您應該將您的活動的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>