最近开发一个APK的时候遇到了一个问题,CPU动不动就占用到40%以上,而且是一个服务型的常驻内存APK,这样子肯定不行的,CPU发热可能会过高。这个APK需要优化,包括内存优化,结构优化,CPU优化等等

1.获取APK内存占用情况

使用top命令,确定自己是不是占用了比较高的cpu

top

2.获取线程占用情况

直接执行top命令只能获取到整个进程总的cpu占用,但是我们的APK大多数是有很多线程的,我们要确定代码哪里有问题,需要知道哪个线程出问题,命令如下

top -m 10 -t -d 2

m代表最大显示的条目,t代表线程方式显示,这里就必要说到一个问题了,很多同学写JAVA线程(Thread)的时候,都不传线程名给super,这样子我们用top或者其它调优的时候在线程级别上调优就很麻烦了,命令不能看到线程名,只看到Thread-55之类的形式,所以请保持良好的习惯:

class MyThread extends Thread {public MyThread() {super("MyThread");//给线程取个名字,让系统知道,别让系统给你随机编号}
}

3.是哪个方法干了坏事

我们最终肯定是优化我们的代码,那么就需要知道具体是哪行代码占用了高CPU,这时候我们用Android Studio的Monitor就可以了,打开Android Studio的Monitor(请保持adb连接你的设备),如下图点击CPU的时钟按钮开始跟踪APP CPU调用:

操作你的APP(如果你的代码需要某些操作才能触发),再次点击刚刚的按钮结束,之后会弹出一个CPU分析框,选择你刚刚分析出觉得有问题的线程:

就可以看到各个方法的CPU占用了,这里注意一点,你的代码可能开启了代码混淆,这时候会看不清楚真实的函数名称,可以先出一个不混淆的版本进行调试。

我用了这个方法想办法优化或者避免(少)调用某些代码CPU从40%降低到了5%,找到热点代码,开始你的优化吧。

Android应用开发之CPU优化相关推荐

  1. Android NDK开发之 Neon优化

    http://blog.csdn.net/ccjjnn19890720/article/details/7291228

  2. Android NDK开发之 NEON基础介绍

    原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...

  3. Android 系统(55)---Android App开发之ANR异常的原因分析及处理总结

    Android App开发之ANR异常的原因分析及处理总结 Android App开发之ANR异常的原因分析及处理总结 ANR的全称是application not responding,根据它的意思 ...

  4. android swstnw cn,Android应用开发之ubuntu14.04编译ijkplayer备忘

    本文将带你了解Android应用开发之ubuntu14.04编译ijkplayer备忘,希望本文对大家学Android有所帮助 1.   i|VIhzkKCf#3UUnstall gi[e-RkYJ4 ...

  5. Android快速开发之appBase——(6).HttpReq和APICloudSDK

    转载请注明本文出自JFlex的博客http://blog.csdn.net/jflex/article/details/46462077,请尊重他人的辛勤劳动成果,谢谢! Android快速开发之ap ...

  6. android idata 模式,Android快速开发之appBase——(3).详解IHolder和IData

    Android快速开发之appBase--(3).详解IHolder和IData IHolder和IData是AVLib的两个组件,在前面已经使用过了,那么这一篇将会详细说明这两个组件的用法. IHo ...

  7. 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...

    本文将带你了解Android应用开发之Android重写ImageView实现图片镜像效果的代码教程,希望本文对大家学Android有所帮助. 前两天朋友问我一个问题,如何实现从手机系统相册加载一张图 ...

  8. Android NDK开发之旅31 FFmpeg音频解码

    ###前言 #####基于Android NDK开发之旅30--FFmpeg视频播放这篇文章,我们已经学会视频解码基本过程.这篇文章就对音频解码进行分析. #####音频解码和视频解码的套路基本是一样 ...

  9. android 监听物理返回键,Android应用开发之react-native 监听Android物理返回键

    本文将带你了解Android应用开发之react-native 监听Android物理返回键,希望本文对大家学Android有所帮助. 1. componentWillMount(){         ...

最新文章

  1. Professional WCF 4读书笔记(2)——消息交换模式
  2. java 后台查询卡_java后台
  3. 【转】电驴提示“该内容尚未提供权利证明,无法提供下载”之解决办法详解...
  4. STM32使用非8M晶振时如何修改代码
  5. RGB565与RGB555位图文件格式的标志识别
  6. 图解TCP数据报结构以及三次握手(非常详细)
  7. linux显卡烤机操作,显卡拷机必备:FurMark时隔一年全新升级
  8. 杭州师范大学马云雕像被拆,校方回应!
  9. 修改MYSQL密码及权限
  10. C++友元函数、友元类与类模板
  11. 幕布(思维导图)官方版 v1.1.15
  12. 2018全球50大最佳发明名单
  13. 金山办公推出协同办公全家桶 WPS升级为超级工作入口
  14. Laragon 升级composer
  15. 微信企业付款 ”错误码:NO_AUTH,错误信息:此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置“报错的处理办法
  16. Python3,异常进阶写法之retrying。
  17. 威客witkey模式的提出
  18. 小程序复制文字、保存图片
  19. win10下安装并启动zookeeper
  20. [admin]-01

热门文章

  1. 记录D5-23.5.20
  2. 电气工程中一种较好的电缆编号方式
  3. 华为防火墙USG2220 DDNS动态域名配置
  4. 键盘输入单位不固定员工工资来求平均工资while和do.....while
  5. 使用for循环打印直角三角形(实心/空心)、等腰三角形(实心/空心),菱形(实心/空心)
  6. 疑难杂症:Linux下杀毒软件CPU占用率为何持续升高
  7. 快速搞定---POI 和 EasyExcel
  8. cpu卡、sam卡原理
  9. 阿里巴巴资深技术专家崮德:8 个影响我职业生涯的重要技能
  10. 为什么要管理客户关系?有效管理客户关系的5种方法