安卓點選home鍵重啟
阿新 • • 發佈:2018-12-01
主要原因是:每次啟動Intent導致新建立Task的時候,該Task會記錄導致其建立的Intent;而如果後續需要有一個新的與建立Intent完全一致(完全一致定位為:啟動類,action、category等等全部一樣,不可多項也不可缺少),那麼該Intent並不會觸發Activity的新建啟動,而只會將已經存在的對應Task移到前臺;這也就是為什麼桌面會在再次點選圖示時將後臺任務挪到前臺而不是重新啟動App的實現。
1.在啟動頁的Activity中的 onCreate()方法做處理
1 protected void onCreate(Bundle savedInstanceState) {2 super.onCreate(savedInstanceState); 3 // 避免從桌面啟動程式後,會重新例項化入口類的activity 4 if (!this.isTaskRoot()) { // 判斷當前activity是不是所在任務棧的根 5 Intent intent = getIntent(); 6 if (intent != null) { 7 String action = intent.getAction(); 8 if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {9 finish(); 10 return; 11 } 12 } 13 } 14 }
2.如果啟動頁為SplashActivity,之後finish掉啟動MainActivity,解決辦法:將MainActivity的launchMode設定為“singleTask”
1 <activity 2 android:name=".activity.StartActivity" 3 android:screenOrientation="portrait"> 4<intent-filter> 5 <action android:name="android.intent.action.MAIN" /> 6 <category android:name="android.intent.category.LAUNCHER" /> 7 </intent-filter> 8 </activity> 9 <activity 10 android:name=".activity.MainActivity" 11 android:launchMode="singleTask" 12 android:screenOrientation="portrait" />