记一次Android页面卡顿排查总结

背景:更新完gosdk(端上的主要逻辑在go层完成)后,冷启动时首页明显会卡一下

问题排查:

1、通过在application onCreate()中设置getMainLooper().setMessageLogging(new LxLogPainter());来查看耗时的日志,没看到耗时日志

2、logcat中查找关键字"Skipped",发现:
2023-05-24 15:08:07.389  1132-1132  Choreographer   com...e.xx.xx  I  Skipped 383 frames!  The application may be doing too much work on its main thread.
说明主线程中确实有耗时操作,但是不知道发生在哪儿

3、查找卡顿时间点之前到日志,发现:
2023-05-24 15:08:06.625  1132-1132  te.xx.xx  com...e.xx.xx W  Long monitor contention with owner Thread-50 (1883) at void lxbadge.Badger.registerPlatformType(int)(Badger.java:-2) waiters=0 in xx.xx.xx.gup.RedDotService xx.xx.xx.gup.RedDotService.getInstance() for 4.927s

从上面的日志发现RedDotService.getInstance()中有耗时操作registerPlatformType(int),看代码,但是是在子线程中执行的,怎么会卡主线程呢?

看代码发现,RedDotService.getInstance()第一次调用的时候在子线程中被调用

然后在执行构造函数时,执行了 耗时操作registerPlatformType(int),大概5s,导致主线程中此时调用RedDotService.getInstance()时处于线程阻塞状态,正是因为以上原因,导致无法通过getMainLooper().setMessageLogging(new LxLogPainter());来查看卡顿日志

 

修改方案:

方法1:将构造函数中判断线程的逻辑删除

方法2:RedDotService.getInstance()第一次不要在线程中执行

总结:

1、通过skipped关键字判断是否有掉帧

2、通过getMainLooper().setMessageLogging(new LxLogPainter());查看卡顿日志

3、可以通过关键字Long monitor contention with owner查看是否有线程长时间不释放锁

Android Studio在打开页面时经常卡住,可能是由于以下几个原因: 1.计算机配置低:Android Studio是一个资源密集型的工具,需要较高的计算机配置来支持其运行。如果你的计算机配置较低,比如内存不足或处理器性能较弱,就可能导致Android Studio在打开页面卡顿。 解决方法:升级你的计算机配置,增加内存或者更换处理器等,以提高Android Studio的运行效率。 2.插件冲突:Android Studio支持各种插件来增强其功能,但某些插件可能与其他插件或Android Studio本身存在冲突,导致卡顿现象。 解决方法:通过禁用或卸载疑似冲突插件,逐个排查导致卡顿的插件,并保留必要的插件。 3.项目文件损坏:Android Studio打开项目时,如果项目文件损坏或存在错误的配置,也可能导致卡顿问题。 解决方法:尝试重新导入项目或者创建一个新项目,并将原项目的代码和资源文件逐个复制到新项目中,以修复可能存在的项目文件损坏问题。 4.软件版本问题:如果你的Android Studio版本较旧,可能存在一些已知的bug或性能问题。 解决方法:更新到最新版本的Android Studio,并确保你的操作系统也是最新的。 总之,解决Android Studio卡在打开页面的问题需要根据具体情况来进行分析排查,可以尝试上述方法逐个排除可能的问题,以提高Android Studio的运行效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值