android项目内存优化,资源优化着手点

就我当前项目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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值