美文网首页
Andoroid性能优化

Andoroid性能优化

作者: 天天听听 | 来源:发表于2018-01-12 14:50 被阅读0次

一、页面启动优化:

   页面启动慢主要有2种页面渲染慢和java代码初始化慢的问题。

页面渲染:

 1、最少布局嵌套

  布局嵌套渲染极其耗时,减少不必要的嵌套就能大大提高启动速度。原理可参照view的渲染过程

新版本谷歌推荐ConstraintLayout布局,该布局能只有一层布局就能界面绘制。但是对于简单的使用releactionLayout和LinearLayout布局,简单的绘制,这两者性能更好。

三者对比:

同深度:LinearLayout>releactionLayout>ConstraintLayout  三者的差距主要在onMeasure

同布局:ConstraintLayout>releactionLayout>LinearLayout ConstraintLayout能够有效减少页面嵌套

使用merge:对于不需要background,布局的。可以使用merger,减少一层嵌套

使用ViewStub: 对于不需要立即加载的布局,可以使用ViewStub。不会立即渲染

 2、减少大文件,主要大图片,有必要的可以压缩(150K以下)

代码初始化化

  除了必要不耗时的findId操作,尽量放在异步线程处理

  使用Fragment代替Activity,甚至,注册广播,注销广播,获取imei,读取空文件,这些也要放在子线程

App启动慢

 除了首页优化外,application初始化数据放在异步线程,需要使用的变量使用同步锁,防止为初始化完毕

对于首个加载的Activity,可以使用透明背景:可以减少application加载主题的消耗

<style name= "EmptyTheme">

   <item name="android:windowIsTranslucent">true</item>

  <item name="android:windowNoTitle">true</item>

</style>

然后,在onCreate第一行执行:setTheme(R.style.AppTheme);

使用线程池

  大量的线程调用,频繁的线程调度,会降低系统的性能。对于使用的异步任务,只使用一个线程池,能够有效的提高加载效率。

使用IDLE

Looper.myQueue.addIdleHander该方式利用了当UI线程无任何消息需要处理的时候,在其空闲时候执行相关业务。对于一些布局实时性不是特别高的场景下使用,

strict mode

监测一切不合规的操作,主要是主线程的耗时操作,内存泄露

策略:

  在baseActivity中,oncreat方法加入:

  if(MyApplication.isDebug()){

  StrictMode.setThreadPolicy(new

StrictMode. ThreadPolicy.detectAll.penaltyLog().build());

   StrictMode.setVmPolicy(new StrictMode.VmPolicy.detectAll.penaltyLog().build())

}

只能在debug中加入严格模式监测策略,会严重影响性能。

这样出现违规时就会输出相应的日志。根据log排查问题。

常见的耗时操作

1、SharePreference的commit方法

2、文件读取

3、json解析等算法复杂度高的操作

4、所有跨进程通信,binder进程的原因,导致简单的方法也会卡顿

①    账号信息的读写(AccountManager)

②TelePhoneManage

③其他SystemManager(获取imei,手机号简单的方法也会anr)

相关文章

  • Andoroid性能优化

    一、页面启动优化: 页面启动慢主要有2种页面渲染慢和java代码初始化慢的问题。 页面渲染: 1、最少布局嵌套 布...

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • Awesome Extra

    性能优化 性能优化模式 常见性能优化策略的总结 Spark 性能优化指南——基础篇 Spark 性能优化指南——高...

  • 常用的后端性能优化六种方式:缓存化+服务化+异步化等

    性能优化专题 前端性能优化 数据库性能优化 jvm和多线程优化 架构层面优化 缓存性能优化 常用的后端性能优化六大...

  • webpack 性能优化

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 优化调试功能 生产...

  • iOS性能优化 - 整理

    本文主要包含: 性能优化 - 卡顿性能优化 - 耗电优化性能优化 - APP启动优化安装包瘦身 一  性能优化 -...

  • 【React.js 20】React性能优化

    React性能优化 React性能优化主要分三块: React 组件性能优化 属性传递优化针对单组件性能优化,很多...

网友评论

      本文标题:Andoroid性能优化

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