美文网首页
Android高版本 手动唤醒屏幕后未及时关闭屏幕问题分析

Android高版本 手动唤醒屏幕后未及时关闭屏幕问题分析

作者: 珩珩保镖 | 来源:发表于2024-12-12 17:36 被阅读0次

Android高版本 手动唤醒屏幕后未及时关闭屏幕问题分析

简述

Android 14 (sdk 34) 设置屏幕超时后短时间内多次手动唤醒屏幕后,关闭屏幕(或进入屏保)时间和屏幕超时设置的时间不一致;

问题描述

在Android 11之后版本,设置屏幕超时15s( 设置->显示->屏幕超时->选择15s ); 等待15秒后关闭屏幕(或进入屏保);然后马上操作唤醒屏幕; 等待15s 后关闭屏幕;再次唤醒后再次等待15s发现系统没有关闭屏幕;等10分钟左右发现屏幕才会关闭; 如果不关闭屏幕马上唤醒,会发现再次关闭屏幕的时间和设置的屏幕超时时间一致;

问题分析

这个现象从操作上看比较人性化的, 像是操作系统的一种自适应亮度和休眠机制.

查找framework源码修改记录发现git commit

git commit.png

其中commit描述如下:

Keep screen on when user undims it manually

When user manually undims the screen x times - it's a clear indication
that they want to keep it on and dimming is not wanted. For such case,
keep the screen on temporarily by acquiring a wakelock,
without changing the actual timeout setting.

问题解决

如果接受这个休眠机制那边可以不用处理

如果不接受我们可以将com.android.server.power.ScreenUndimDetector#systemReady里面的mWakeLock赋值去掉

文件路径frameworks\base\services\core\java\com\android\server\power\ScreenUndimDetector.java

    public void systemReady(Context context) {
        readValuesFromDeviceConfig();
        DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_ATTENTION_MANAGER_SERVICE,
                context.getMainExecutor(),
                (properties) -> onDeviceConfigChange(properties.getKeyset()));

        /*final PowerManager powerManager = context.getSystemService(PowerManager.class);
        mWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
                        | PowerManager.ON_AFTER_RELEASE,
                UNDIM_DETECTOR_WAKE_LOCK);*/
    }

相关文章

  • Android性能优化---内存泄漏及解决

    Android内存泄漏专题分析 一、资源对象未关闭引起的内存泄漏 Android的资源对象在不再使用时,及时关闭对...

  • Android 唤醒手机亮屏并前台显示

    Android 唤醒手机亮屏并前台显示 目前网络上许多唤醒手机亮屏的方式在高版本上都失效了 下面是自己实现的方式 ...

  • FMResultSet 是否需要关闭

    问题 问题代码 错误在使用FMDB执行查询时未关闭返回结果集(FMResultSet) 解决方案(手动关闭结果集)...

  • 锁屏背单词

    知米背单词的锁屏背单词功能,在安卓版本是直接点亮屏幕后出现在锁屏上,在ios版本因为不支持,所以是在第0屏: 根据...

  • android各个版本的新特性

    转自 android各个版本的新特性 一、Android 4.x 新锁屏界面:Android4.0重新设计了锁屏幕...

  • 灭屏流程

    分析了PMS部分的亮屏流程。PMS模块中也提供了灭屏接口goTosleep(),方法给其他组件或应用来关闭屏幕,这...

  • Android全面屏以及异形屏适配策略

    全面屏适配方法 声明最大屏幕高宽比在Android清单文件androidManifest.xml声明最大最大屏幕高...

  • Android 8.1 横屏切换灰竖屏崩溃问题

    最近适配android 8,遇到了横屏切换到竖屏就会崩溃问题,这个问题在android旧版本下是没问题。我们的Ap...

  • URP屏幕后处理

    URP屏幕后处理 由于Unity对URP的屏幕后处理需集成要到2019.4版本后才稳定,所以升级Unity版本到2...

  • 微信小程序问题总结

    一、授权问题。 ios删除小程序会删除授权,Android却不会,调试Android的授权需要手动关闭授权再删除小...

网友评论

      本文标题:Android高版本 手动唤醒屏幕后未及时关闭屏幕问题分析

      本文链接:https://www.haomeiwen.com/subject/vtpxejtx.html