iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

Activity 的啟動模式

在談到 Activity 的啟動模式之前,先來提到 task ,task 是 Activity 的集合,控制介面的跳轉以及返回,在應用程式執行的時候,會以堆疊的方式來管理使用者開啟的 Activity,並存放進 task 中。

Activity共有四種啟動模式,分別為:

  • standard(預設)
  • singleTop
  • singleTask
  • singleInstance

standard

標準啟動模式,也是 Activity 預設的啟動模式,在這個模式下啟動的 Activity 每次都會 intent 新的 Activity,同一個 task 中可以存在多個 Activity,例如我在 Activity A 中再次啟動 Activity A,那 task 中的狀態為 A --> A。

singleTop

如果用 singleTop 模式啟動的那個 Activity 已經存在於 task 的頂端,那如果再次啟動這個 Activity 的話,就不會創建新的 Activity ,而是直接使用再 task 頂端的那個 Activity,如果不是在 task 頂端的話,則會像 standard 模式一樣在次創建一個新的 Activity。

singleTask

使用 singleTask 啟動的 Activity,首先會去檢查是否已經有這個 Activity 存在,如果有的話,則會直接 intent 這個 Activity,並且把它這個 task 中比它上層的 Activity 全部結束掉,使該 Activity 置於頂端。
如果沒有這個 Activity 存在的話,則會去檢查要啟動的 Activity 的 taskAffinity 屬性,並且去尋找有沒有跟此屬性一樣的 task,有的話則會在這個 task 中啟動並放置於頂端,沒有的話就會建立新的 task 來啟動該 Activity。

singleInstance

以 singleInstance 啟動的 Activity 具有唯一性,就是整個系統中只會存在一個實例,且會獨佔一個 task,任何透過它開啟的 Activity 都會被丟到其他 task 中。


如何修改啟動模式?

打開 AndroidManifests.xml,找到想要修改的 Activity,加入指定的 launchModel。
https://ithelp.ithome.com.tw/upload/images/20220911/20151953q6xLvv3ipi.jpg

<application>
...
    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"/>
...
</application>

參考資料

Activity | Android Developers
Android Activity Launch Mode


上一篇
第四天:Android 四大元件之 Activity(二)
下一篇
第六天:Android 四大元件之 Service
系列文
轉職成 Android Developer 的最後一哩路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言