前言
1、這個問題困擾我n久n久
2、網上出現很多解決方案,大多是設置lanchModel 雖然這樣能解決一些問題,但是不能完全解決,且與我的情況也不相符
解決方案:
方案一:
1、如果你的程序有管理activity的棧,可以在啓動LogoActivity的onCreate中判斷這個棧是存在其他的activity 如果有 本身直接 finish + return 。這樣是ok,但是總感覺有種不靠譜的感覺。
方案二:
2、 無意中發現原來是創建的快捷方式的問題,快捷方式的flag或者intent的創建方式導致重啓。
關於如何創建快捷方式 這裏省略
看代碼
public void addShortCut(){
Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
// 設置屬性
...
...
...
//點擊快捷方式的操作
這裏的intent 必須要新創建的,不能使用 getintent 或者getPackmager.getLaunchIntentFor...等方式創建,如果這樣創建導致 setflag無效
Intent intent = new Intent();
intent.setComponent(getComponentName());
intent.setAction(intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
//要添加這句話
intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED| Intent.FLAG_ACTIVITY_NEW_TASK);
// 設置啓動程序
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
//廣播通知桌面去創建
this.sendBroadcast(shortcut);
}