Android编码优化

1.ListView:利用ConvertView复用视图,利用ViewHolder减少findViewById次数

2.使用RecyclerView代替ListView,RecyclerView封装了ViewHolder,可以大大减少我们封装ListView的时间.
你可能会吐槽它居然没有提供Item的点击事件,甚至连添加头部和底部都要自己封装,但是其实这些RecyclerView都交给了Adapter适配器,如果你够懒网上第三方BaseRecyclerViewAdapterHelper这个框架已经实现了你想要的功能.

3.RecyclerView:
3.1使用notifyItemChanged()局部更新UI代替notifyDataSetChanged(),当你数据特别多的时候notifyDataSetChanged()效率不高,有时候你只需要更新一个Item的时候notifyItemChanged()的优化就显而易见了.
3.2如果你每个Item的高度是固定的,那么可以设置RecyclerView.setHasFixedSize(true),这样就可以减少每次都需要计算每个Item的时间.

4.什么关流啦,操作数据库的时候游标要关之类的就不多说.这里要说的是当有大量的bitmap要处理的时候,建议手动调用recycle()释放,避免频繁触发GC

5.尽量避免在For循环里面创建对象,特别是循环的次数特别多的时候,在for循环里面频繁创建对象必然频繁触发GC,这时候可能有人会问,触发GC将垃圾回收不好吗?是的,GC回收对象是好的,但是频繁触发GC,每次触发GC的时候,会导致线程暂停,频繁的线程暂停,就会导致卡顿.其实在for循环里面的操作还是小心为好,像不必要的耗时操作,不必要的更新UI,都会导致界面的卡顿.还有就是将计算集合长度的方法提到for循环外面,避免每次计算集合长度.

6.懒加载:例如ViewPager+Fragment的数据就可以采用懒加载,UI一般会预加载.
7.使用StringBuilder代替加号拼接字符串.

总结:
其实优化应该是与编码同时进行的,不应该为了优化而优化,事实上很多项目较赶也不会专门给你时间优化.而且后面的优化,没处理好的话将会导致新bug的产生,再有如果你没有足够的经验也很难定位到需要优化的点.嗯...还有很多暂时没想到,后面再补吧 - -.将我的经验与大家分享,希望可以帮到你们.

你可能感兴趣的:(Android编码优化)