就我当前项目android项目优化点进行了简单的列举,用到的优化点简单记录
一、Handler的引用
private final Handler mHandler = new Handler()的方式来执行异步操作,android studio总是会提示一个黄色的警告
不管有不有强迫症的人看到都会菊花一紧,经过官网介绍handler的引用应该使用如下格式
既然是官网推荐的方法肯定没问题,但是在我的业务场景中,这些使用多有不便,会有一些非静态变量在里面使用,强制使用的话会导致所有的非静态变量都 要加上static,最后我的解决办法是当前网络最牛逼的异步框架rxjava。
该方法中delay为rxjava中延时操作符,可以去掉此操作符。
二、静态变量的定义
这点其实是个人习惯问题,大家编码时注意避免使用static修饰变量
三、private public protect三种修饰词
对于java来说设计思想面向对象开发,访问成员变量用get、set方法,不对外开放的变量都用private没毛病
四、for与foreach循环性能(此处只针对遍历值的情况,并不考虑增删操作角度的情况)
-
用for循环arrayList 10万次花费时间:5毫秒
-
用foreach循环arrayList 10万次花费时间:7毫秒
-
用for循环linkList 10万次花费时间:4481毫秒
-
用foreach循环linkList 10万次花费时间:5毫秒
-
此数据来源另外一个博主https://blog.csdn.net/mlc1218559742/article/details/52712408
五、String StringBuffer StringBuilder
处理字符串速度来看StringBuilder> StringBuffer > String
String为字符串常量,其它两者为字符串变量。因此在处理字符串时如果要拼接的话,String 把新添加的字符串新建一个临时变量来处理。可以理解成耗时在创建变量和销毁变量上。
注意:String 处理字符串时 String str="abc"+"de";与 String str="abc"; str=str+"de";两种操作是不同的概念,前者相当于String str = "abcde",只是一次赋值,后者是两次赋值
从线程安全来讲StringBuilder线程不安全,StringBuffer线程安全。StringBuffer中很多方法带有synchronized关键字。因此在日常业务逻辑中,如果线程安全则使用StringBuilder,多线程操作当然选择StringBuffer
六、android中cpu架构包
1.armeabi
2.armeabi-v7a
3.arm64-v8a
4.x86
5.x86_64
6.MIPS
7.MIPS64
x86 主要是运用在平板上,而 MIPS 算是80年代的处理器,基本上就没出现在手机上.
arm系列的处理器原本是没有64位的,后来arm收购了mips改良出了arm64的处理器.
同时适配 armeabi, armeabi-v7a 和 x86,在性能方面来说是较为完美的方案,只是APK的大小也会随之的变大
附带一位大神的详细介绍https://www.jianshu.com/p/4b58e41b3948
七、布局优化
官网推荐了Constraintlayout约束布局,相当于一个口袋把所有组件装在一起了。减少布局的层级,减少draw重绘的次数。
相关用法请网上找大神介绍,个人推荐博客https://blog.csdn.net/feather_wch/article/details/79585647#7-%E6%9D%83%E9%87%8D