1、问题
第一种操作:
- 安装APP成功后,在安装器中点击“打开”,APP启动,先进入闪屏页,然后才进入首页;
- 按下Home键,回到桌面;
- 再点击APP的图标,APP并不是打开之前已经加载完的首页,而是重新进入闪屏页,然后再进入首页。
第二种操作:
- 安装APP成功后,关闭安装器,回到桌面,点击APP的图片,APP启动,先进入闪屏页,然后才进入首页;
- 按下Home键,回到桌面;
- 再点击APP的图标,APP直接打开之前已经加载好的首页
2、解决方案
我的方案
网友方案
原因探究
安装器中打开APP代码
@Override
public Intent getLaunchIntentForPackage(String packageName) {
// First see if the package has an INFO activity; the existence of
// such an activity is implied to be the desired front-door for the
// overall package (such as if it has multiple launcher entries).
Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
intentToResolve.addCategory(Intent.CATEGORY_INFO);
intentToResolve.setPackage(packageName);
List<ResolveInfo> ris = queryIntentActivities(intentToResolve, 0);
// Otherwise, try to find a main launcher activity.
if (ris == null || ris.size() <= 0) {
// reuse the intent instance
intentToResolve.removeCategory(Intent.CATEGORY_INFO);
intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER);
intentToResolve.setPackage(packageName);
ris = queryIntentActivities(intentToResolve, 0);
}
if (ris == null || ris.size() <= 0) {
return null;
}
Intent intent = new Intent(intentToResolve);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName(ris.get(0).activityInfo.packageName,
ris.get(0).activityInfo.name);
return intent;
}
从代码中可以看到,Installer启动只设置了Intent.FLAG_ ACTIVITY NEW TASK;
桌面打开APP代码
public static Intent makeLaunchIntent(LauncherActivityInfo info) {
return new Intent(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_LAUNCHER)
.setComponent(info.getComponentName())
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
}
Launcher中是有设置FLAG_ ACTIVITY_ RESET_ TASK_ IF_ NEEDED和FLAG_ ACTIVITY_ NEW_ TASK;