Android性能优化

#翻译# Android Performance Case Study by Romain...

↘锁芯ラ 提交于 2020-03-02 04:29:53
片头声明: 1、本片是据Romain Guy剧本编写 Android Performance Case Study 衍生的电影,某些部分可能由于个人英语水平有限及理解原因,可能有别于原作者的原意。如有发现,请指正。以利于我们共同学习,共同进步。 2、本片是继 Android性能优化案例研究(上) by孙立出的下版。狗尾续貂,望大家海涵。 剧情介绍:孙立翻译的上半部分是如何发现性能问题,我这的下半部分是如何使用工具确定这些问题并给与了部分问题的解决方案。对于上部,就不再这里转载了,可以直接点击上面链接进行阅读学习。也可能过几天会转载过来 各位看官,下面就接上部开播: 移除无用的图层: 为了减少重绘,我们首先必须知道,什么会导致重绘。这也是Hierarchy Viewer和Tracer for OpenGl之前的用处所在。 Hierarchy Viewer(图层查看器)是ADT的一部分,可以用于检查View Hierarchy(视图层级)的快照。它在解除布局问 题时尤其有用,但也可以方便的检查工作性能。 【重要:默认情况下Hierarchy Viewer只能工作在非安全模式的设备上,比如工程机、平板或者虚拟机。要在所有手机 上使用Hierarchy Viewer,需要添加一个叫ViewServer的开源库项目到你的应用中。 https://github.com/romainguy

Android ListView优化之局部刷新(非notifyDataSetChanged()方式)

最后都变了- 提交于 2019-12-06 08:58:22
ListView是在Android开发中用得非常多的控件之一,并且这些列表还经常需要我们去对listView的数据进行刷新操作,在这种情况下,我们往往都会去调用adapter的notifyDataSetChanged()方法对listView的界面重新进行绘制。众所周知,notifyDataSetChanged()这个方法是Adapter的观察者模式的体现,它的实现原理就是对我们的数据源进行监听,一旦我们的数据源发生了变化,就会去调用getView()方法对整个界面上可见的Item进行刷新。但是,这同时也对很多本不需要刷新的Item也进行了刷新,这样的效率无疑是很低的,当数据量很大的时候还有可能会出现卡顿或者图片闪烁等问题。这对于用户体验上来说,也是很不友好的。 在下文中,我是以一个小的Demo来介绍怎么用非notifyDataSetChanged()的方法来对listView的界面进行刷新,并利用Item的点击来模拟数据源的变化。 不多说,直接看代码:(布局简单,就不放了) 1. 用notifyDataSetChanged()方式刷新界面 package com.example.zohar.androidtest.listView; import android.os.Bundle; import android.support.v7.app.AppCompatActivity;