此问题比较奇葩,复现位置有好几个,大部分都是settings。

例如:连接usb后点击通知栏的USB连接选项,然后再直接按home键,或者蓝牙接收点击之后有个弹出框,在按home键。

解决方案如下(原本想跟入到底层看看到底什么原因,结果发现任务列表是从ActivityManagerNative.java类中取得,故不走此胡同):

分析:

\frameworks\base\packages\SystemUI\src\com\android\systemui\recents\RecentsActivity.java

发现手机按下菜单键之后就会触发此页面开启。

具体发起人为:

./src/com/android/systemui/recents/Recents.java

具体参见:

void startAlternateRecentsActivity(ActivityManager.RunningTaskInfo topTask,ActivityOptions opts, boolean fromHome, boolean fromSearchHome, boolean fromThumbnail,TaskStackViewLayoutAlgorithm.VisibilityReport vr)

过程不细说,核心关键为:为什么启动时候没有任务,而旋转之后就出现,经过不断抓取log后发现:

RecentsActivity.java类中有个

RecentsConfiguration mConfig;

此全局变量中有个很关键的变量launchedFromHome,如果当前没有任务,每次按菜单键启动,那么此变量一定是true,如果旋转那么必定为false。

如果有任务,那么必定都是false。

具体过程不做描述,想要了解过程的可以参见Recents类的startRecentsActivity方法。

分析问题最后结论为:只要保证在旋转的时候launchedFromHome可以正确判断即可解决问题(后续变化改动都在RecentsActivity类)

那么第一步,判断上一次旋转屏是否有任务:

参考:

void updateRecentsTasks()

此方法为每次开启最近任务时候都会调用到

ArrayList<TaskStack> stacks = plan.getAllTaskStacks();
mConfig.launchedWithNoRecentTasks = !plan.hasTasks();

其中是否有任务的判断为上述两行,由于机制特殊,无法在旋转时候监听旋转方法(没具体分析原因),所以只能通过生命周期来控制。

经过log比对,发现按菜单键出现的页面,之后返回首页等操作都不调用onDestory方法,而旋转的时候就会调用,那么解决问题就比较简单了。

添加全局变量:

private boolean mLastHasTasks;

在这两行下面添加一行状态记录:

ArrayList<TaskStack> stacks = plan.getAllTaskStacks();
mConfig.launchedWithNoRecentTasks = !plan.hasTasks();
mLastHasTasks = mConfig.launchedWithNoRecentTasks;  //add

在onDestory方法内添加:

@Override
protected void onDestroy() {super.onDestroy();if(mLastHasTasks){  //addmConfig.launchedFromHome = true;  //add}  //add// Unregister the system broadcast receiversunregisterReceiver(mSystemBroadcastReceiver);// Stop listening for widget package changes if there was one boundif (Constants.DebugFlags.App.EnableSearchBar) {mAppWidgetHost.stopListening();}
}

完工。

转载于:https://www.cnblogs.com/vendor/p/6519317.html

Android Launcher3 开启旋转后有部分任务在旋转后会显示出来相关推荐

  1. Android Launcher3分析——开篇

    Android Launcher3分析--开篇 简介 Launcher就是一个Activity,Launcher的源码中也是继承的Activity.直观体现就是手机的桌面,当我们打开手机的时候,手机的 ...

  2. android launcher3,Android Launcher3 基本功能分析

    Android Launcher3 基本功能分析 1, 界面的布局, 从上往下分别为:DeleteDropTarget(应用卸载区域,它是一个DropTarget) Workspace(页面容器,一个 ...

  3. android自定义渐变色圆环,Android实现光点模糊渐变的自旋转圆环特效

    本文实例为大家分享了Android实现光点模糊渐变的自旋转圆环效果,供大家参考,具体内容如下 项目中需要实现的效果图如下: 可以这个表盘看到中间部分都是没有什么难点的,主要是周围圆环的三种效果: 1. ...

  4. android launcher3源码分析,Android Launcher3源码分析与修改

    Launcher和Setting是客户需求经常改动的地方,不过其代码量也不容小觑.今天就初略来看一下,以下内容都是本人查阅资料加上自己的理解得出,由于自己水平有限,如果误导还请指出: 先从Androi ...

  5. android反射开启通知_作为Android开发者 你真的知道app从启动到主页显示的过程吗?...

    前言 之前我跟大家说过,在一个夜黑风高的晚上,我的男同事突然给我发了一条微信,我点开来看,他竟然问我Android从按下开机键到启动到底发生了什么?此刻我的内心如下图: 然后就在昨天晚上,我又收到了他 ...

  6. 在Android的 设置-显示 中增加控制屏幕旋转方向的选项

    在Android的 设置->显示 中增加控制屏幕旋转方向的选项 参考博文 实现目标 效果局限 代码实现 配置资源文件 界面搭建 功能实现 默认值修改 其他情况 结语 参考博文 Android-x ...

  7. Android Launcher3简介

    一.Launcher3概述 Launcher顾名思义,就是桌面的意思,也是android系统启动后第一个启动的应用程序,这里以android11为例,和其他应用并无区别,只是增加了对其他app和wid ...

  8. 关于Android Launcher3相关优秀文章的记录

    关于Android Launcher3相关优秀文章的记录 Android M Launcher3主流程源码浅析 (主要分析主题流程,不涉及代码) Android Launcher3源码分析与修改 (偏 ...

  9. android 固定launcher,android Launcher3设置默认桌面应用

    android launcher3 设置默认桌面应用,供大家参考,具体内容如下 launcher3 的默认桌面应用是在 res/xml里 默认有4种样式 default_workspace_3x3.x ...

  10. android launcher3桌面快捷方式分析

    背景 一般情况下,为了让用户更方便的打开应用,程序会在桌面上生成一些快捷方式. 本来呢,如果是原生的桌面,其实是十分简单,直接调用系统相关的API就行了.但是众多的系统厂商以及众多第三方自己定制的桌面 ...

最新文章

  1. 手把手教你如何建立自己的Linux系统(二)
  2. docker 容器中的 uid 和 gid
  3. CentOS-7.0.中安装与配置Tomcat-7的方法
  4. python爬虫代码优化:使用生成器重构提取数据方法
  5. 华软linux虚拟机密码,Linux_账户和组管理
  6. 这么多连麦方案,到底哪种适合你?
  7. echarts折线图相关
  8. X86和X86_64和AMD64的由来
  9. 计算机办公软件的使用技巧,实用的Word小技巧集锦(1)办公软件知识 -电脑资料
  10. 不到一秒卖出一部!荣耀9X系列国内销售29天破300万台
  11. 超材料技术行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  12. NUC1214 回文素数【回文+素数】
  13. 初学JAVA随记——8bit(1byte)的取值范围是+127到—128
  14. mysql query profiler_Using the New MySQL Query Profiler
  15. Elasticsearch和Kibana版本对应关系
  16. 分酒问题matlab代码,KPCA用于葡萄酒分类的测试代码
  17. 主题美化 —— IAR篇
  18. dijkstra标号法表格_狄克斯屈拉dijkstra标号算法.pptx
  19. 中国科学院计算机致谢,央视评中科院博士论文致谢走红
  20. WinRAR突现骇人漏洞,官方:没必要修复

热门文章

  1. 苹果mac最好用的SVN客户端:Cornerstone 4 (SVN管理工具)
  2. 苹果mac数据库开发工具:Navicat Premium
  3. 苹果Mac文件夹样式设计工具:Folder Designer
  4. Ps 初学者教程,如何使用修复画笔工具修整照片?
  5. SMART Utility for mac (硬盘检测工具)
  6. ABBYY Lingvo European for Mac(万能词典)
  7. 如何在Mac上的“活动监视器”中运行系统诊断?
  8. 《Programming in Lua 3》读书笔记(九)
  9. ARKit何以从同类技术中胜出?
  10. Spring概况(一)