前言
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);
}