關(guān)于按下home鍵再次打開應用重新啟動的解決方法

在項目開發(fā)中遇到一個問題,打開應用進入到某個頁面,按下home鍵后再次進入應用時,總是進入啟動頁而不是之前的頁面,如果按返回鍵就是進入到之前的頁面,這樣用戶體驗很不好,網(wǎng)上主要介紹了兩種解決方法。

1、在AndroidManifest.xml文件中對LoginActivity和MainActivity設(shè)置啟動模式為singleTask,即在activity下加入以下代碼:android:launchMode="singleTask";
2、在打開應用最先啟動的activity的onCreate()方法的setContentView()方法之前加入以下代碼:

if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
    finish();
    return;
}

第一種方法沒能解決掉問題,第二種方法解決了。
第二種方法的原理:
正常情況下,打開應用啟動A頁面,再跳轉(zhuǎn)到B頁面,然后按下home鍵再進入應用,會重新創(chuàng)建A頁面,此時A頁面在B頁面的上面,所以也就出現(xiàn)了問題描述中“如果按返回鍵就是進入到之前的頁面”的情況;
加入判斷后,再打開app,還會重新創(chuàng)建A頁面,但是此時會判斷一下,這時A頁面不是在棧底,所以finish掉,然后露出下面的B頁面。


2020.1.20更新:繼上一次改動之后,這個突然又出現(xiàn)了,在網(wǎng)上搜了下,還是只有兩種呼聲,第二種答案就是目前所用的,但問題又出現(xiàn)了,所以又試了下另一種,就是去AndroidManifest文件中將第一啟動的頁面的lanuchmode(頁面啟動模式)去掉,我之前是設(shè)置為了singleTask模式。bug復現(xiàn)的原因就是在某一次更新中我把啟動頁的模式設(shè)置成singleTask。
保險起見兩種方法都寫在代碼里吧,就是:
1、在AndroidManifest文件中,啟動頁(初次進入的頁面)不要設(shè)置android:launchMode="singleTask"屬性,如果有了就去掉;
2、在啟動頁activity的onCreate()方法里的setContentView()方法之前加上以下代碼:

if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
            finish();
            return;
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容