首页 > 其他分享 >Android 11 -- 关于dialog和悬浮窗导致SystemUI状态栏下拉频繁闪烁(窗口焦点问题)

Android 11 -- 关于dialog和悬浮窗导致SystemUI状态栏下拉频繁闪烁(窗口焦点问题)

时间:2023-11-21 17:12:02浏览次数:45  
标签:11 窗口 状态栏 -- winCandidate mFocusedWindow 焦点 null

bug描述:如果当前app是全屏的属性,导致状态栏隐藏且有dialog 弹出时,
这个情况下想下拉显示状态栏,会导致状态栏频繁闪烁。

//services/core/java/com/android/server/wm/DisplayPolicy.java

//更新系统状态栏的属性
int updateSystemUiVisibilityLw() {
        // If there is no window focused, there will be nobody to handle the events
        // anyway, so just hang on in whatever state we're in until things settle down.
        //只有焦点窗口才能控制系统栏,没有焦点的窗口,不会响应这些事件
        WindowState winCandidate = (mFocusedWindow != null) ? mFocusedWindow : mTopFullscreenOpaqueWindowState;
        
        //所以可以在这里打印日志,看出现bug时焦点窗口的情况,然后分析
        android.util.Log.d("TAG",(mFocusedWindow != null)+"");
        android.util.Log.d("TAG",mFocusedWindow.toString()+"");//打印当前获取焦点的窗口信息:app的包名
        
        if (winCandidate == null) {
            return 0;
        }

        //add
        if (mFocusedWindow != null) {
            if (mFocusedWindow.getAttrs().token == null) {
                winCandidate = mTopFullscreenOpaqueWindowState;
            }
        }
        //end

        // The immersive mode confirmation should never affect the system bar visibility, otherwise
        // it will unhide the navigation bar and hide itself.
        if (winCandidate.getAttrs().token == mImmersiveModeConfirmation.getWindowToken()) {
            ...........
        }
            ................
        }

参考

标签:11,窗口,状态栏,--,winCandidate,mFocusedWindow,焦点,null
From: https://www.cnblogs.com/kato-T/p/17847016.html

相关文章

  • AZ-900 practice test-004
     Question7of50WhichtwoAzureresourcescanmakeuseofavailabilityzones?Eachcorrectanswerpresentsacompletesolution.Availabilityzonesareprimarilyforvirtualmachines,manageddisks,loadbalancers,andSQLdatabases.Describethecore......
  • Linux的shell脚本中的比较运算符
    shell中的比较运算符-eq    //等于-ne    //不等于-gt    //大于(greater)-lt     //小于 (less)-ge    //大于等于-le    //小于等于在今天的Linux——shell命令实验中,执行.sh脚本:if((a<60));thenecho"Youdidn'tpassthe......
  • sql 查询数据库的常用脚本
    查询数据库的所有表的记录数 ----查询所有表的记录数量----------------------------------------------------------------------------------selecta.nameas表名,max(b.rows)as记录条数fromsysobjectsa,sysindexesbwherea.id=b.idand......
  • Element UI树形表格刷新保留之前展开的列
     完整链接: ElementUI树形表格刷新自动展开_element表格刷新之后仍然是展开状态_HyunDerek的博客-CSDN博客......
  • C# 窗体应用程序文件夹内容及各文件功能
     1.每创建一个窗体就会生成三个文件,.cs、.Designer.cs、.resx,.cs是整个窗体的应用程序代码,重点。 2.Properties主要是一些属性信息。3.app.config是配置信息,实现修改配置信息,程序就根据配置信息进行运行。 ......
  • 04MYSQL
    查询关键字之having过滤having与where的功能是一模一样的都是对数据进行筛选where用在分组之前的筛选having用在分组之后的筛选为了更好的区分所以将where说成筛选having说成过滤#统计每个部门年龄在30岁以上的员工的平均薪资并且保留平均薪资大于10000的部门......
  • IMU介绍
    陀螺仪常见的陀螺仪为MEMS,使用硅微加工技术制造,使用科氏力。误差模型\[m(t)=m_t(t)+bias(t)+\epsilon(t)\\\dot{bias}(t)=n_b(t)\]固定偏差bias,作为状态量估计白噪声\(\epsilon(t)\)积分成角度随机游走,连续时间标准差\(\sigma\)(标定结果)除以\(sqrt(\delta(t))\)得到离散标......
  • 【树链剖分】P3401 洛谷树 题解
    P3401考虑先将路径权值进行转化,因为很难对路径直接进行统计。考虑如何表示出这条路径的权值。记\(s_i=\oplus_{j\in\text{path}(1,i)}w_j\),其中\(\text{path}(i,j)\)表示\(i\)到\(j\)的路径上的边集。则\(u\tov\)的路径的权值为\(s_u\opluss_v\)。现在转变为......
  • 浏览器为什么不用操作系统里面的CA根证书?
    看看文心一言的回答: 更新及时性:操作系统和浏览器的更新频率不同,如果操作系统中的CA根证书已经过期或被撤销,而浏览器仍然使用该证书进行验证,那么就可能导致安全问题。因此,需要用户及时更新浏览器的CA根证书,以确保网站的安全性得到保障。 如果操作系统有对应的根证书,但是浏览......
  • Class成员函数的声明方式
    1#include<iostream>usingnamespacestd;classComplex{ doublereal,imag; public: Complex(doubler=0,doublei=0):real(r),imag(i){}; operatordouble()const;//强制类型转换};Complex::operatordouble()const{returnreal;}intmai......