原因:由于點(diǎn)擊桌面圖標(biāo)啟動應(yīng)用,是默認(rèn)執(zhí)行配置了 LAUNCHER 的 activity 界面。當(dāng)我們的應(yīng)用是出于冷啟動時(shí),是沒有問題的。但當(dāng)應(yīng)用處于后臺,再次點(diǎn)擊桌面圖標(biāo)啟動應(yīng)用時(shí),是屬于熱啟動。如果想在熱啟動后直接進(jìn)入上一次的界面,就會發(fā)現(xiàn)還是直接打開了默認(rèn)的啟動頁。
啟動頁的配置,如:
<activity
android:name=".account.view.LoginActivity"
android:screenOrientation="portrait"
android:theme="@style/LoginTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
解決:判斷啟動頁是否是根任務(wù),如果不是,則不初始化啟動頁。在啟動頁的 oncreate 添加下面代碼。
override fun onCreate(savedInstanceState: Bundle?) {
if (!isTaskRoot && intent.action != null) {
finish()
return
}
super.onCreate(savedInstanceState)
}
親測有效,若還有其他更好處理方式,請多多指教。