android點選home鍵再點選app圖示返回原先的activity
阿新 • • 發佈:2021-01-16
技術標籤:Android
問題
在進入app一般進入登陸介面,登入介面設定的啟動模式為singleTask,即是每次啟動登入介面時,如果在棧中沒有例項,則直接在棧頂建立一個新的例項;如果棧中已經存在例項,則將其上其他activity清除,將其至到棧頂位置複用。
這種啟動模式下導致問題:通過登入介面進入A介面,在A介面按home,重新點開app發現返回是登入介面而非A介面。
原因
進入應用:h-a1-a2
回退home介面:h-a1-a2-h
重新點選應用:h-a1
h是home介面,a1是應用登入介面,a2是應用任意一個子介面
解決
由原因分析可知,再次進入應用時,登入介面不會位於棧底位置,可以用以下兩個條件判斷來finish登陸介面
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 避免從桌面啟動程式後,會重新例項化入口類的activity
if (!this.isTaskRoot()) {
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
return;
}
}
}
}
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//首次啟動 Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT 為 0,再次點選圖示啟動時就不為零了
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
finish();
return;
}
}