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

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


Android 界面加载卡顿严重,Skipped 56 frames! The application may be doing too much work on its main thread_第1张图片

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

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

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


Android 界面加载卡顿严重,Skipped 56 frames! The application may be doing too much work on its main thread_第2张图片

改成在activity中绑定。

Android 界面加载卡顿严重,Skipped 56 frames! The application may be doing too much work on its main thread_第3张图片

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

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

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

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

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


Android 界面加载卡顿严重,Skipped 56 frames! The application may be doing too much work on its main thread_第4张图片

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

你可能感兴趣的:(Android开发)