Android中的Activity啟動模式,你了解多少?
模式介紹
Activity的啟動模式是指在啟動一個新的Activity時,該Activity如何與任務棧中的其他Activity進行交互的規則。Android中有四種主要的Activity啟動模式,它們分別是:
- standard(標準模式):每次啟動一個Activity時,系統都會創建一個新的實例,并放入任務棧中。無論這個Activity是否已經存在,都會創建一個新的實例。
- singleTop(單頂部模式):當啟動的Activity已經位于任務棧的頂部時,不會創建新的實例,而是直接使用已經存在的實例。如果不位于頂部,則會創建新的實例。
- singleTask(單任務模式):系統會檢查任務棧中是否已經存在該Activity的實例,如果存在,則將該實例之上的所有Activity移出棧,使得該實例成為棧頂。如果不存在,則會創建一個新的實例。
- singleInstance(單實例模式):該模式下的Activity會單獨放在一個新的任務棧中,且該任務棧中只有這一個Activity。其他應用無法與其共享任務棧。
啟動模式可以通過在AndroidManifest.xml文件中的標簽的android:launchMode屬性來指定。不同的啟動模式可以滿足不同的業務需求,例如在需要單例模式的場景下可以使用singleInstance啟動模式。
設置方式
「靜態方式:」
通過在AndroidManifest.xml文件中的標簽中設置android:launchMode屬性來設置Activity的啟動模式。
<activity
android:name=".MainActivity"
android:launchMode="singleTask">
</activity>
「動態方式:」
通過設置啟動的Activity的flag制動啟動模式
Intent intent = new Intent();
intent.setClass(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
使用場景
- 「standard」:
場景:一般的應用程序界面跳轉
示例:從一個Activity跳轉到另一個Activity,每次都創建新的實例
- 「singleTop」:
場景:需要頻繁跳轉到同一個Activity,并且不希望重復創建實例
示例:從Activity A跳轉到Activity B,如果Activity B已經位于棧頂,則不創建新實例,直接使用已存在的實例
「singleTask」:
場景:需要確保整個應用中只有一個該Activity的實例
示例:應用的主界面,或者一個需要獨立任務棧的特殊界面
「singleInstance」:
場景:需要將該Activity放置在一個新的任務棧中,并且確保整個系統中只有一個該Activity的實例
示例:一個需要獨立任務棧的特殊界面,比如來電界面或者鬧鐘提醒界面
這些啟動模式可以根據應用的需求來靈活選擇,以達到最佳的用戶體驗和應用性能。