美文网首页
Android中的点点滴滴收集(算是优化吧)

Android中的点点滴滴收集(算是优化吧)

作者: 丶誓 | 来源:发表于2016-08-20 21:49 被阅读0次

感谢无限的网络资源,我这里只是资源的搬运者。

1.布局xml文件中使用include,merge,ViewStub。ViewGroup的层数,相对布局的使用便于适配。

2.常量使用static final进行修饰。

3.String,StringBuffer(线程安全),StringBuilder(线程不安全,效率高)。

4.Bitmap使用后调用recycle()再置空。网上说API 9(Android 2.3)之前,Bitmap的对象由java和C/C++两部分构成,只置空不recycle()不能回收C++管理的部分。API 9之后就可以了。个人认为多写一句recycle()无妨。

5.使用各种连接之后在finally中进行close(),注册过的东西,不使用时进行销毁。

6.如果单例模式中使用了Context的引用,一定要注意这个Context的生命周期。因为单例的周期是整个应用的周期,这里的Context如果是Application则没有问题,如果是Activity的话就会造成Activity退出时不会被GC。

7.了解Handler与Message和MessageQueue的关系以及其生命周期,避免使用不当产生OOM。将内部类改为静态内部类,静态内部类中使用弱引用来引用外部类的成员变量。因为如果消息是延迟发送的话,即使Activity销毁了也不能及时被GC,因为未发送的消息持用Handler的引用,进而使持有内部类Handler的外部类不能GC。Handler 的持有的引用对象最好使用弱引用,资源释放时也可以清空 Handler 里面的消息。

8.尽量避免使用static成员变量,因为static的生命周期与应用的生命周期一直。

9.异步线程的内部类实现,也会导致OOM。

10.了解四大引用与GC的关系。

11.ArrayList, LinkedList的区别。

12.如果有使用到ListView的注意Item的缓存。

13.APK瘦身:res中的图片文件压缩,以及删掉不用的文件。代码混搅(使用框架时,注意混搅可能产生问题)。

14.DNS优化,www.xxxx.com/api/xxx/xx写成127.1.1.1的形式,可以少一个域名解析的过程(看个人需求,因为如果使用域名,服务端换IP不会对App产生影响)。

15.使用线程池(newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor)进行Thread操作。

16.handler.obtainMessage()复用message。

17.http重复请求的次数,以及文件的压缩格式7z优于Gzip。

18.Android中一些为了解决性能问题而生的类:LruCache,SparseArray,SparseBooleanArray,SparseIntArray,Pair。

19.自定义View中的线程以及Paint等资源的回收。

20.SQLite中的索引创建和compileStatement以及查询语句中的条件顺序。

21.了解依赖注入框架(代码简化框架)Dagger、Butter Knife等的实现原理。开发效率确实快了不少,但是应该会牺牲一点运行效率吧。两者取利弊吧。

只搬运了这么多。用或不用,它都在这里,或增或减,或对或错。

相关文章

网友评论

      本文标题:Android中的点点滴滴收集(算是优化吧)

      本文链接:https://www.haomeiwen.com/subject/itpisttx.html