問題
Android 設定頁面的啟動模式為 singletask 之后,當按Home 退出時,再重新打開應用,還會進入首啟動頁,就會造成一些應用需要重新登錄,當前頁資料丟失等問題
解決
-
去除啟動頁的 singletask 的啟動模式(AndroidManifest.xml)
-
在啟動頁activity添加如下代碼
1 // 避免從桌面啟動程式后,會重新實體化入口類的activity 2 if (!this.isTaskRoot()) { // 判斷當前activity是不是所在任務堆疊的根 3 Intent intent = getIntent(); 4 if (intent != null) { 5 String action = intent.getAction(); 6 if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) { 7 finish(); 8 return; 9 } 10 } 11 }
分析
雖然我們解決了問題,但我們也要分析解決問題的思路,
哈哈哈,可能你說思路就是百度,別人這樣寫,反正我用了也成功了,(but 我們要往優秀程式員的方向發展)
-
第一步(看代碼進行了什么處理)
第二行: this.isTaskRoot() 判斷是否是activity堆疊 最下方一個
第三行:getIntent() 獲取該上一個頁面傳過來的intent的資訊,因為在啟動頁中,我們會設定
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
第六行:判斷是否通過啟動頁啟動,也有可能是代碼中的需求跳轉,這種情況不能把頁面銷毀了,
第七行:銷毀當前啟動頁
【思考】那么為什么如果是外部啟動的就 finish 呢?
-
第二步(看看別人怎么說)
參考1:https://www.jianshu.com/p/eea14ca0b164


轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/47859.html
標籤:Android
