将Activity启动模式说的明白一点
Android的四種啟動模式Standard、SingleTask、SingleTop、SingleInstance及其作用這里就不講述了,這個屬于基礎中的基礎,我當做大家已經知道了。這里唯一可能存在疑問的就是singleInstance,所以本文通過具體的代碼示例來演示不同啟動模式的Activity相互跳轉的時候Task棧的使用情況。
我們這里創建如下幾個Activity,見名知意,他們的啟動模式就和文件名是一樣的。
<activity android:name=".SingleInstanceActivity2"android:launchMode="singleInstance"/><activity android:name=".SingleTopActivity"android:launchMode="singleTop"/><activity android:name=".SingleTaskActivity"android:launchMode="singleTask" /><activity android:name=".SingleInstanceActivity"android:launchMode="singleInstance" /><activity android:name=".StandardActivity"android:launchMode="standard" /><activity android:name=".MainActivity"android:launchMode="standard"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter> </activity> 復制代碼場景一:
MainActivity啟動了是SingleInstanceActivity,然后在SingleInstanceActivity中再次啟動MainActivity,此時會怎樣?點擊返回返回到哪兒呢?
查看task棧情況
在cmd命令行里或者Android Studio中的Terminal里敲入如下命令:
adb shell dumpsys activity 復制代碼點擊返回鍵出棧:
我們發現,它的順序是MainActivity->MainActivity->SingleInstanceActivity。我們可以看到規律,它是先將一個棧都清空之后再去清空第二個棧。
場景二:
MainActivity啟動了是SingleInstanceActivity,然后在SingleInstanceActivity中再次啟動SingleTaskActivity,此時會怎樣?點擊返回返回到哪兒呢?
查看task棧情況
點擊返回鍵出棧:
我們發現,它的順序是SingleTaskActivity->MainActivity->SingleInstanceActivity。我們可以看到規律,它是先將一個棧都清空之后再去清空第二個棧。
場景三:
MainActivity啟動了是SingleInstanceActivity,然后在SingleInstanceActivity中再次啟動SingleTopActivity,此時會怎樣?點擊返回返回到哪兒呢?
查看task棧情況
點擊返回鍵出棧:
我們發現,它的順序是SingleTopActivity->MainActivity->SingleInstanceActivity。我們可以看到規律,它是先將一個棧都清空之后再去清空第二個棧。
場景四:
MainActivity啟動了是SingleInstanceActivity,然后在SingleInstanceActivity中再次啟動SingleInstanceActivity2,然后在SingleInstanceActivity2中再次啟動StandardActivity,此時會怎樣?點擊返回返回到哪兒呢?
查看task棧情況
點擊返回鍵出棧:
我們發現,它的順序是StandardActivity->MainActivity->SingleInstanceActivity2->SingleInstanceActivity。我們可以看到規律,它是先將一個棧都清空之后再去清空第二個棧,然后再去清空第三個棧。
總結:
1.Standard、SingleTask、SingleTop模式的Activity會放在同一個Task棧中,其他每一個SingleInstance會單獨放在一個棧中
3.每次創建一個不同的SingleInstance模式的Activity,都會重新創建一個Task棧來放這個Activity。
3.出棧的時候看當前棧是哪個,當前棧出棧完畢之后再讓第二個棧出棧。
轉載于:https://juejin.im/post/5cbc8c886fb9a0687822e160
總結
以上是生活随笔為你收集整理的将Activity启动模式说的明白一点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 领扣-1/167 两数之和 Two Su
- 下一篇: 从徐汇到虹口