现象

  今天工作中,在对公司产品进行测试的时候,程序员小哥点出了一个问题。问题点出的步骤是这样的:

  1.安装APP

  2.点击打开

  3.经过闪屏页,进入主页后,点击HOME键

  4.再次进入程序会重新进入闪屏页,不过经过闪屏页后会停留在HOME前所在的页面

原理分析

  从此我们可以知道QQ安装器其实也就是使用Intent来启动其刚刚安装的那个App,但是问题所在的是:他们的启动Intent并没有跟桌面的启动Intent完全一致!

我们将桌面的Task记为【TaskL】,QQ安装器的Task记为【TaskQ】,我们应用的Task记为【TaskA】,那么分析如下:

  进入桌面: L1 ---- L1是单纯的桌面

  打开QQ: L1Q1Q2 ---- Q2是安装完毕后询问是否启动对应程序的Activity

  点击打开: L1Q1Q2A1A2 ---- A1是入口闪屏页,A2是主页Activity

  返回桌面: Q1Q2A1A2L1 ---- 回到桌面页,也就是L1前置

  点击A的图标: Q1Q2L1A1A2A1 ---- 找到【TaskA】,挪到前台,由于比对Intent并不是完全一致,所以该请求是新启动Activity,那么把A1添加到对应的【TaskA】中

  所以bug出现了,出现了再一次的闪屏页【A1】,问题定位成功!

  PS:这里我稍微变种一下,因为一般我们闪屏页都是在启动主页后finish的,而主页一般是singleTask模式

  打开QQ: L1Q1Q2 ---- Q2是安装完毕后询问是否启动对应程序的Activity

  点击打开: L1Q1Q2A2 ---- A1是入口闪屏页,A2是主页Activity,启动后A1业务逻辑应该finish掉,所以从【TaskA】中挪去

  返回桌面: Q1Q2A2L1 ---- 回到桌面页,也就是L1前置

  点击A的图标: Q1Q2L1A2A1 -> Q1Q2L1A2A1 ---- 找到【TaskA】,挪到前台,由于比对Intent并不是完全一致,所以该请求是新启动Activity,那么把A1添加到对应的【TaskA】中,然后A1所再一次触发启动主页,但是主页是 singleTask模式,所以又回到了上次对应的A2主页,所以现象为再一次出现闪屏页,然后回到原先的主页界面。

解决思路

  自身业务代码规避,我们可以知道,如果是多余的闪屏页入口Activity的话,其基本不可能位于Task的根部,而如果正常启动的话,闪屏页入口Activity必定在多对应的Task的根部位置,那么我们可以从这个地方对于这个bug进行规避,方法就是在闪屏页入口Activity的onCreate代码加入如下一段代码:

// 避免从桌面启动程序后,会重新实例化入口类的activity
if (!this.isTaskRoot()) {Intent intent = getIntent();if (intent != null) {String action = intent.getAction();if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {finish();return;}}
}

  

转载于:https://www.cnblogs.com/widgetbox/p/7495818.html

关于APP在小米5s第一次安装启动后,点击home返回桌面,再次进入重进闪屏页问题...相关推荐

  1. 关于APP在小米5s第一次安装启动后,点击home返回桌面,再次进入重进闪屏页问题

    现象 今天工作中,在对公司产品进行测试的时候,程序员小哥点出了一个问题.问题点出的步骤是这样的: 1.安装APP 2.点击打开 3.经过闪屏页,进入主页后,点击HOME键 4.再次进入程序会重新进入闪 ...

  2. 小米5s Plus安装类原生系统

    小米5s Plus安装原生系统 手机型号:MI 5s Plus    codeName:natrium 第一步:先解锁手机 登录网站http://www.miui.com/unlock/index.h ...

  3. Android Studio 第一次安装启动Failed to resolve报错解决方案

    笔者近期准备着手做一个有关安卓的项目,兴冲冲地找来Android学习书籍,并下载安装了Android Studio.可是在Android Studio的第一次运行就遇到了很大的问题,各种莫名其妙的报错 ...

  4. Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析...

    前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...

  5. Docker 安装启动后无法连接服务器

    Docker 安装启动后服务无法连接: 原因:docker0 ip 与 系统ip冲突 # 查看ip ifconfig 解决方法重新绑定docker0 ip(docker0 不能设置为localhost ...

  6. Flutter——踩坑之旅(iOS闪屏页+启动页 闪屏之后会黑一下才进入启动页)

    程序猿日常 flutter填坑--iOS闪屏页+启动页效果优化 闪屏之后会黑一下进入启动页 问题描述 大部分app都有自己的启动页,我们经常在启动页做一些判断逻辑,例如 是否第一次启动app,第一次启 ...

  7. 【Android】android开发之splash闪屏页的四种实现方式,启动页的实现教程。

    2019独角兽企业重金招聘Python工程师标准>>> 作者:程序员小冰,GitHub主页: https://github.com/QQ986945193 新浪微博:http://w ...

  8. uniapp 引导页 启动页 闪屏页功能介绍及部分功能实现

    启动页设置 uniapp自带的启动页是一个白底的页面,上面有个uni的logo,然后周围有个圆圈的进度条,这个是启动页. uniapp中可以自定义启动页,注意两点: 不要勾选"启动界面显示等 ...

  9. Flutter 项目在iPhone/苹果手机启动页/闪屏页黑屏问题

    问题很奇怪 不清楚什么原因,有知道的朋友求告知,设置如图一所示的 storyboard 布局文件,就会显示1-2s的黑屏,去掉就可以了,那在 xcode 里面怎么设置开屏页呢,需要在 Info.lis ...

最新文章

  1. 深入浅出 ZooKeeper
  2. arcsde服务启动不了
  3. java 最近将工作中用到的工具总结——日期工具
  4. 【GAN优化】长文综述解读如何定量评价生成对抗网络(GAN)
  5. python环境下neo4j的安装与使用
  6. 构建第一个Flex的Mobile APP
  7. oracle自增自删分区的脚本,oracle实现自增方法(错误ora-04098解决)
  8. 感动 ∣她养我长大,我陪她到老!90后女孩带痴呆症养母读研
  9. python中模块文件的扩展名不一定是py_python模块和python包有什么区别?
  10. EasyDarwin流媒体云平台:EasyCamera开源摄像机接入海康威视摄像机实时视频
  11. 描述性物理海洋学--第一章学习笔记
  12. 3D游戏设计读书笔记二
  13. DataX踩坑2 | 定时任务crontab不执行或报错:/bin/sh: java: command not found
  14. 教学概述+教学内容+教学原则+教学方法+教学组织...+教学模式和教学策略
  15. 技术管理工作中的三个原则
  16. DataBinding的使用之双向绑定
  17. 基于IP-PBX的VoIP系统解决方案
  18. 秦羽接引的鸿蒙第四人,星辰变:仙界最强的五人,秦羽第二,敖无虚垫底,小黑难进前三...
  19. vue解决h5 video视频 ios和安卓兼容问题
  20. 学习笔记-希尔算法(交换法和移位法)

热门文章

  1. iOS 13.0 之 presentViewController 模态全屏适配解决方案
  2. sublime text3 python找不到文件路径_如何在sublime3项目设置中设置python模块的搜索路径?ImportError: No module named *的解决办法...
  3. 24.CAPWAP原理_CAPWAP协议介绍
  4. 【cmd】 如何通过cmd打开 jupyter,在jupyter中如何打开文件夹
  5. Servlet运行的详细步骤
  6. Docker----可视化化工具humpback
  7. 都 2022 了,还不抓紧学 typeScript ?
  8. Gecco学习笔记(十三)
  9. java怎么循环_java怎么实现循环
  10. 小王子,玫瑰花和小狐狸