一、標準模式(Standard)
標準模式是Android的默認模式,即每次啟動Activity都會創建一個新的實例加入到棧頂。當用戶按下返回鍵時,當前Activity會被銷毀並出棧,此時前一個Activity重新位於棧頂,重新獲得焦點。
但是標準模式存在一個缺點,即當一個Activity啟動另一個Activity時,後者也會被創建加入到棧頂,此時棧中會有多個Activity實例,導致資源浪費和用戶體驗下降。
// 在標準模式下啟動一個Activity Intent intent = new Intent(this, TargetActivity.class); startActivity(intent);
二、棧頂復用模式(SingleTop)
棧頂復用模式是指當一個Activity已經位於棧頂時,再次啟動它時不再創建新的實例,直接復用已有的實例,並調用onNewIntent()方法。
這種模式可以避免創建多個相同的Activity實例,提高應用性能和用戶體驗。但是如果一個Activity不在棧頂時,仍然會創建新的實例加入到棧頂。
// 在棧頂復用模式下啟動一個Activity Intent intent = new Intent(this, TargetActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent);
三、棧內復用模式(SingleTask)
棧內復用模式是指當一個Activity已經存在於棧中時,再次啟動它時並不會在棧中創建新的實例。系統會調用該Activity實例的onNewIntent()方法,同時把它上面的Activity全部銷毀後,使其位於棧頂。
這種模式適用於一些需要保持單例的Activity,例如應用首頁。當用戶從其他應用或者系統桌面返回時,會優先找到已有的Activity實例進行復用,而不是重新創建一個新的實例。
// 在棧內復用模式下啟動一個Activity Intent intent = new Intent(this, TargetActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
四、單例模式(SingleInstance)
單例模式是指一個Activity在整個系統中只有一個實例,無論是從本應用啟動還是從其他應用啟動。當一個Activity被設置為單例模式時,系統會為它單獨創建一個新的棧來管理。多個應用共享同一個棧中的Activity實例。這種模式適用於一些需要全局單例的特殊場景,例如鬧鐘、電話等系統級應用。
但是需要注意的是,由於單例Activity會在新的棧中運行,因此無法與其他Activity進行共享數據。
// 在單例模式下啟動一個Activity Intent intent = new Intent(this, TargetActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_INSTANCE); startActivity(intent);
原創文章,作者:IKGLS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/315949.html