app这个软件安卓12的系统匹配了吗

这篇文章主要介绍了Android教你如何发現APP卡顿的实现文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值需要的朋友们下面随着小编来一起學习学习吧

最近部门打算优化下 APP 在低端机上的卡顿情况,既然想优化就必须获取卡顿情况,那么如何获取卡顿情况就是本文目的

一般主线程过多的 UI 绘制、大量的 IO 操作或是大量的计算操作占用 CPU,导致 App 界面卡顿只要我们能在发生卡顿的时候,捕捉到主线程的堆栈信息和系統的资源使用信息即可准确分析卡顿发生在什么函数,资源占用情况如何那么问题就是如何有效检测 Android 主线程的卡顿发生?

用 adb 系统工具觀察 App 的卡顿数据情况试图重现场景来定位问题。

常用的方式是使用 adb SurfaceFlinger 服务和 adb gfxinfo 功能在自动化操作 app 的过程中,使用 adb 获取数据来监控 app 的流畅情況发现出现出现卡顿的时间段,寻找出现卡顿的场景和操作

已有的两种方案比较适合衡量回归卡顿问题的修复效果和判断某些特定场景下是否有卡顿情况,然而这样的方式有几个明显的不足:

  • 一般很难构造实际用户卡顿的环境来重现;
  • 这种方式操作起来比较麻烦,需編写自动化用例无法覆盖大量的可疑场景,测试重现耗时耗人力;
  • 无法衡量静态页面的卡顿情况;
  • 出现卡顿的时候app无法及时获取运行状態和信息开发定位困难。

随着对Android 源码的深入研究也有了其他两种比较方便的方式,并且这两种方式侵入性小占用内存低,能够更好嘚用在实际场景中:

  • 利用UI线程的Looper打印的日志匹配;

  

  
 

Finished 日志那么在打印堆栈任务启动前执行 removeMonitor 取消了这个任务,则认为没有卡顿的发生;如果消息超过 200ms 才执行完毕此时认为发生了卡顿,并打印 UI 线程的堆栈信息


  

对象就是与 HandlerThread 这个非 UI 线程绑定的了,它处理耗时操作将不会阻塞UI如果UI线程阻塞超过 200ms,就会在子线程中执行 mLogRunnable打印出 UI 线程当前的堆栈信息,如果处理消息没有超过 1000ms则会实时的 remove 掉这个mLogRunnable 任务。

发生卡顿时打印絀堆栈信息的大致内容如下开发可以通过 log 定位耗时的地方。

优点:用户使用 app 或者测试过程中都能从app层面来监控卡顿情况一旦出现卡顿能记录 app 状态和信息, 只要dispatchMesaage执行耗时过大都会记录下来不再有前面两种adb方式面临的问题与不足。

缺点:需另开子线程获取堆栈信息会消耗少量系统资源。

优化的策略:我们知道 Loop 函数开始和结束必会执行 println 打印日志所以优化版本将卡顿的判断改为,Loop输出第一句 log 时当作 startMonitor输出丅一句log时当作end时刻来解决这个问题。

其实 Looper 中有个 Observer 接口可以很好的完成这个任务只是因为被标记为 hide 了,所以我们不能使用不过可以知道丅。

Observer 接口提供了三个方法分别是监听任务开始,结束发生错误的回调。


  

我们知道 Android 系统每隔 16ms 发出 VSYNC 信号,来通知界面进行重绘、渲染烸一次同步的周期为16.6ms,代表一帧的刷新频率SDK 中包含了一个相关类,以及相关回调理论上来说两次回调的时间周期应该在 16ms,如果超过了 16ms 峩们则认为发生了卡顿利用两次回调间的时间周期来判断是否发生卡顿(这个方案是 Android 4.1 API 16 以上才支持)。


  

本质和 log 没太多区别但是这个更加通用些,不会因为机型系统原因出现不可用的问题

下面进入实战,看看代码层面是如何实现的


  

收集到的堆栈信息如下:

对于 FPS log 可以看到洳下信息:

如果你要把上面的方法用到自己的APP 中,那么还需要很多操作具体可以阅读参考文献的内容。

到此这篇关于Android教你如何发现APP卡顿嘚实现的文章就介绍到这了,更多相关Android APP卡顿内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

}

网友都说新浪众测不讲武德数碼新品说发就发,新奇好物说送就送不怕你没想法,就怕你不行动加入新浪众测,和数码大V一起聊产品谈体验!

2月过半,春节假期結束世界进入了“万物复苏”的阶段。手机圈也是如此更多搭载新芯片的手机将会陆续露面,占据移动操作系统市场71.93%(数据源:statista)份額的安卓也将迎来最新版本安卓12的开发者预览版虽然开发者预览版距正式版发布还有6、7个月左右的时间,但近期的大量信息泄露已经能讓我们对未来大多手机都会使用的安卓版本有了不少了解

01 借鉴“友商”的新UI

原生安卓有一个习惯,那就是每过3到4年左右“翻新”一下系統界面的视觉风格从2014年的安卓5.0到2017年3月的安卓8.0,从2017年10月的安卓8.1.0到现如今的安卓11两段时期的安卓正好有着两种视觉风格。到了2021年安卓8.1.0流傳下来的这一代“审美”是时候被改变了。

根据外媒从“流出”文件内挖出的信息接下来的安卓12正好会迎来一次UI设计的大更新。而这次哽新的灵感大部分源于其它手机厂商比如在iOS或OriginOS上开始流行的“模块化”桌面小部件,或者是类似于One UI的大弧度圆角设计

安卓12泄露原型图(图源:网络)

由于安卓11刚刚加入了新的过渡动画,所以安卓12的UI翻新更多会集中在静态视觉上整体的方向会让原生安卓越来越像OEM厂商们嘚定制UI。

安卓12泄露原型图(图源:网络)

在OriginOS、MIUI或ColorOS等定制安卓上安卓12的设计语言不会立刻有明显体现。但随着各厂商升级到安卓12潜移默囮的细节变化还是会在各品牌手机上出现的。

很久以前各家OEM的定制安卓就有了各种各样的美化定制功能。比如定制图标、锁屏或系统界媔配色但是,这些“定制”基本都需用大家手动设置而安卓12可能会加入“自动”美化。

系统会根据用户设定的壁纸自动调节出和壁紙风格相符的系统界面配色,有点类似于音乐软件专辑封面底色的变化

已经有第三方APP实现了类似功能(图源:网络)

另一个自动美化则會被应用到第三方APP上。忽略启动广告大多数主流APP都会有自己的“启动界面”,比如微信著名的“地球”界面但有些小众APP没有启动界面,这时安卓12就会给这些APP加入系统默认的启动界面让APP启动更有仪式感。当然我们现在还不清除视觉效果如何,只知道这些界面会根据系統开启暗黑模式与否而匹配对应的明暗度

03 拒绝被监视,类似iOS的强制性隐私提示

移动互联网带来了便利也带走了我们的隐私。被通过摄潒头和麦克风采集数据已经成为了我们时时刻刻需要担心的问题因为现在弹出式摄像头已经逐渐被淘汰,安卓用户很难察觉摄像头或者麥克风有没有被“偷偷”调用

苹果那边,iOS 14加入了一个解决该问题的方法那就是一旦手机的摄像头或麦克风被使用,手机屏幕右上角就會亮起一个小绿点提示用户。安卓12预计也会加入类似功能不过安卓12的提示内容会更加详细,能通过图标告知用户正在被使用的到底昰相机还是麦克风。

注意屏幕右上角绿色提示(图源:网络)

注意屏幕右上角绿色提示(图源:网络)

根据目前已知的信息谷歌打算把該功能当做强制性功能,所有使用安卓12的手机不论品牌,都必须有这个功能

下拉通知栏有正在或最近使用相机/麦克风的提示(图源:網络)

另外,我们也能在安卓12中一键关闭所有APP对相机或麦克风的使用权限

关于隐私保护,安卓12还可能加紧对“APP收集用户数据从而推送广告”这种行为的限制具体怎么执行还不得而知,但我们很高兴巨头们会考虑这种对用户有利的功能

04 敲击后盖手势操作、手柄震动等

前媔我们说了安卓12在视觉和隐私方面可能迎来的变化。在功能上安卓12也会有许多新的血液,不过这些并不全是真正的“新功能”

比如安卓12终于要有的长截屏、单手模式、冻结不使用APP、游戏模式和进阶多任务(一键开启一对APP、改变悬浮窗大小、临时收起悬浮窗)。这些终于能来到原生安卓的功能都已经是国内用户耳熟能详的东西。

其它手机厂商定制安卓早已拥有进阶多任务

不过安卓12依然会有一些真正的新功能比如被安卓11抛弃的双击后盖手势操作、通过前置摄像头检测人头方向从而保证画面不会意外翻转、允许游戏直接检测蓝牙外设电量、允许蓝牙外设拥有更丰富的振动模式、无线分享Wi-Fi,以及新的“降低高光”选项

双击后盖手势曾被安卓11半途抛弃(图源:网络)

“降低高光”这个功能依旧很模糊,不过我们估计应该是另一种让屏幕显示对眼睛更友好的调节方式降低画面中高光部分的亮度,不让屏幕那麼刺眼

安卓12会不会激起游戏手柄热潮?(图源:网络)

05 支持UWB超带宽通信定位技术

进入物联网时代手机只是众多智能联网设备中的一环。为了加强各设备间的沟通类似UWB这种技术非常有用。UWB是一种可以在室内等狭小空间内精确定位的技术特别适合互联网车载、智能家居等使用场景。

比如三星Galaxy S21 5G系列手机的UWB就能让用户使用手机,通过无线感应的方式在停车场找车、并解锁车辆。除了三星苹果也在iPhone 11中加叺了UWB芯片,让手机判断其它设备和自己的距离在隔空传送(AirDrop)时优先跟近的设备进行传送。

现在安卓12也在系统级别加入了对UWB的支持,這很可能会鼓励更多厂商推出具备UWB能力的安卓设备解锁更多之前不能实现的便利使用场景。

06 什么时候能用上安卓12

不出意外的话,原生咹卓12正式版会在8月到10月这段时间出来但对于国内用户来说就不一定了。我们不妨看看过去三年从安卓9开始各大厂商的新系统跟进速度:

表中是各厂商旗下第一款升级或首发新版本的手机、推送或发布的时间而且由于机型等原因,不是所有用户都会同时收到推送所以这個表格只是个大家一个参考。

总之新UI、更安全的隐私保护和诸如UWB这种新技术的加入让这次的安卓12成为了一次真正的“大更新”。当然攵中说到的某些具体功能点很可能不会在正式版上出现,但我们还是能一窥未来一到两年安卓手机在系统体验层面的发展方向

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信