有一天测试同事下载发布的安装包之后,使用中,home键,点击图标总会出现重启应用的问题,我这边直接android studio 安装没有问题,一开始以为是系统内存不足回收了,于是自己测试,开很多应用,跑视频,音乐,查看手机剩余内存,貌似并有出现(还是AS安装)
后来就怀疑是不是发布的安装包有问题,下载试了一下,我是直接点击完成,并没有使用安装之后的“打开” 按钮去启动应用,貌似也没有出现问题,这就纳闷了
于是就邀请测试演示一下操作流程,结果发现,就是安装完之后是点击“完成”和“打开”去别,其他并没有异样,然后用两台手机分别启动自测
果然,这就是坑!!!!!!
去查找相关问题,原来是 利用程序安装器打开程序,启动的Intent是没有带Category,而我们自己打开程序是带了Category,所以只需要在配置Intent.ACTION_MAIN的Activity判断下有无Category。然后放到通知栏的时候要更具有无Category 来生成启动的Intent
网友提供的解决方案有两种
1、
if (!isTaskRoot()) {
/* If this is not the root activity */
Intent intent = getIntent();
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
return;
}
}
2、
if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){
finish();
return;
}
前提这两种需要在你的rootactivity,也就是启动界面去加,
同时 在super.onCreate(savedInstanceState);之后
setContentView();之前
调用!!!
注意是启动页添加!
感谢网友!
网友评论