Android 界面加载卡顿严重,Skipped 56 frames! The application may be doing too much work on its main thread

在APP开发中,出现了部分界面卡顿十分严重的情况,日志中报


这里写图片描述

  说明在主线程做了太多的耗时操作。
  
应当注意:

  1. 不应在主线程中进行耗时操作,比如网络请求,很复杂耗时的计算,对数据库的访问以及数据修改等。应该另开辟子线程将之放入到子线程中。
  2. 控件的刷新应在主线程中进行操作。

同时,如果在页面加载了很多的图片资源,或图片资源很大的时候,应该尽可能的将资源的获取设置在代码中绑定,而不是在layout文件中直接写明。


这里写图片描述

改成在activity中绑定。

这里写图片描述

.setImageResource()等同于在xml文件中设置图片的background。

  同时如果是加载的图片很多的话,可以使用图片加载框架,比较好用。诸如Glide。框架一般情况下我们只需要使用一个,功能大多数是重复的,Glide的性能和便捷性很棒。具体使用,详情请看郭神的博客,这是一个系列篇。

————————————————————-

  后记
  在改变了图片的加载模式之后,应该会有很大的提升,但是假如还是不够流畅,不够灵活的话,那应该就是我们的程序优化不够,在主线程还是做了太多的工作。仔细看一下代码,将耗时操作尽可能的移出主线程。

  同时,一个重大发现,如果加载的图片不需要太大分辨率的话,可以适当的等比例降低像素值(画图中有这个功能)
  再在程序中加载的时候有奇迹般的进步。


这里写图片描述

  我是从1500*1500 降到了 200*200,尴尬的一批,改完之后就和德芙巧克力一样,柔顺的很。
  如果是自己的找的资源,或者是背景图的话,很可能会忽略这一点,可以看一下自己的是不是太大了,超过了需求

  • 15
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值