1. 程式人生 > 其它 >android點選home鍵再點選app圖示返回原先的activity

android點選home鍵再點選app圖示返回原先的activity

技術標籤: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; } }