當前位置:編程學習大全網 - 網絡軟體 - Android中怎麽切換task到前臺

Android中怎麽切換task到前臺

如果妳的平臺是面向Android3.0(API level 11),那麽恭喜妳,壹個函數就可以搞定:

moveTaskToFront

/reference/android/app/ActivityManager.html#moveTaskToFront(int, int)

如果妳和我壹樣苦逼的在用2.2的平臺,那麽就要稍微麻煩點了,基本上是用taskAffinity + FLAG_ACTIVITY_NEW_TASK + FLAG_ACTIVITY_SINGLE_TOP。

先來看壹下sdk怎麽說的:

1. taskAffinity:

SDK說,如果用帶FLAG_ACTIVITY_NEW_TASK標誌來啟動壹個activity,並且這個activity與當前運行的另壹個task(A)的affinity名字相同,那麽就這個activity就會在那個task(A)裏啟動。

Ok,到這還不行,人家沒說會把Task_A帶到前臺,接著看另壹個Flag

2. FLAG_ACTIVITY_NEW_TASK

好了,重點來了:如果Task_A中已經有了Activity_2,這時候如果以FLAG_ACTIVITY_NEW_TASK來start Activity_2,那麽這個Task_A就會被帶到前臺。

好了,現在Task_A已經可以到前臺了,剩下最後壹步:Activity_2不能創建兩次,這就要求同時使用下面這個flag:

3. FLAG_ACTIVITY_SINGLE_TOP

如果Activity_2在Task的頂端,那麽這個Activity_2就不會被再此創建,而是走onNewIntent.

至此,結合上面3個特性,問題得以解決。結合代碼,流程如下:

1. 在androdiManifest.xml中添加Activity_2的taskAffinity name與Task_A相同(也就是與Activity_1的taskAffinity名字相同),如android:taskAffinity = "android.task.calendar"。

2. 在Task_B啟動前,Activity_1先啟動Activity_2並要求返回結果,startActivityForResult().

3. Task_B中的Activity_4取得所需數據後,保存好(intent,或其他方法),然後startActivity(Activity_2),並帶上(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_SINGLE_TOP)標誌。

4. Task_A被帶到前臺,並且調用到Activity_2::onNewIntent().

5. Activity_2取得之前保存的信息(從Intent或其他地方),調用setResult(),然後finish().

6. Activity_1中的onActivityResult()響應,得到返回結果。

  • 上一篇:《成龍歷險記》***有幾集?急急急!!!拜托各位了 3Q
  • 下一篇:微信朋友圈怎麽關閉廣告推廣功能
  • copyright 2024編程學習大全網