相信大家都还记得前不久“台湾少女长时间用手机打电话后,面部被轻微烫伤”的微博吧,我们随之会有疑问,打个电话为什么会产生如此高的温度?其实这是某些安卓app软件所造成的。这些“问题App”会造成手机卡顿、额外耗电等问题,但为什么会产生这些问题呢?这是因为它的开发人员忽略了代码规范,使得App在后台(用户退出后)仍然大量消耗CPU资源,异常持续时间以让部分型号的Android手机达到较高温度。

这里大概有四类容易导致CPU异常的代码示例:

1、移动广告平台SDK (ex: AdMob)使用规范, 应该只在前台中使用, 退至後台时需要调用释放资源的接口, “AdView.stopLoading()”, 我们分析了许多靠广告收入的免费App, 发现其中有不少App都有CPU过高的问题, 透过分析堆栈, 发现大多有共通之处, 再从其代码分析後定位到开发人员容易忽略调 用“AdView.stopLoading()”接口

2、WebView的使用, WebView是Android提供的一个呈现网页的控件, 一样要注意当应用退至後台或是不使用时, 需调用接口暂停执行网页内容, “WebView.onPause()”

3、SensorManager的使用, SensorManager是Android提供的服务让开发者可以取得传感器的资讯, 由於SensorManager是会不断回调给App传感器的值, 是会不断消耗系统资源. 所以当App在使用SensorManager时, 一定要记得App退出後或者不用时, 要调用”SensorManager.unregisterListener”

4、功能型消耗, 我们发现也有不少App是真的想要在後台做一些事情但是占用了太多的系统资源, 以至於手机卡慢甚至耗电, 举例来说Wifi万能钥匙这款App从大数据分析来看, 该应用的Socket线程会不断运作, 最高甚至在後台会消耗40%以上的CPU资源, 这点就得依靠研发人员兼顾应用的功能和效能了。

5.注册了广播和服务等没及时关闭,导致一直在后台运行

6.内存泄漏是一件头疼的事情,内心泄漏过多会导致内存溢出,内存占有率过大会导致发热

原文:https://blog.csdn.net/gulangboke/article/details/52072109

Android开发中 手机发热原因分析相关推荐

  1. Android开发中StackOverflowError错误实例分析

    http://blog.csdn.net/mozhizun/article/details/7051300 http://blog.csdn.net/gaomatrix/article/details ...

  2. Android开发中手机存储路径问题

    安卓手机文件夹storage/emulated下面有两个文件夹0和legacy? 它们里面的文件是一模一样的,都跟主界面 的文档点开来是一样的,那 0 和 legacy两个文件夹是什么关系,为什么?里 ...

  3. android开发中Settings结构简单分析

    Settings界面结构简单分析 Setting是android系统很重要的模块,这个模块并不是很复杂,这部分也一直在看,很多时候都是在看某个具体的选项,比如WLAN,蓝牙这样具体的源码,但是对于主界 ...

  4. android 判断安装微信,Android开发中判断手机是否安装了QQ或者微信

    下面一段代码给大家分享了android中判断手机是否安装了qq或者微信,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下吧 public static boolean isWeixinAv ...

  5. java中计算器算cos值,Android开发中计算器的sin、cos及tan值计算问题分析

    本文实例讲述了Android开发中计算器的sin.cos及tan值计算问题.分享给大家供大家参考,具体如下: 接到一个需求 :要求计算器sin90=1,拿到知道很疑问 难道不等于一么?测试了四五个手机 ...

  6. android动画sin cos,Android开发中计算器的sin、cos及tan值计算问题分析

    本文实例讲述了Android开发中计算器的sin.cos及tan值计算问题.分享给大家供大家参考,具体如下: 接到一个需求 :要求计算器sin90=1,拿到知道很疑问 难道不等于一么?测试了四五个手机 ...

  7. android motionevent 坐标,Android开发中MotionEvent坐标获取方法分析

    本文实例讲述了Android开发中MotionEvent坐标获取方法.分享给大家供大家参考,具体如下: Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横), ...

  8. android include 控件详解,Android开发中include控件用法分析

    本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面 ...

  9. android开发中遇到的问题汇总

    android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...

最新文章

  1. python软件下载路径问题-mac上Python安装和修改Python默认路径遇到的问题
  2. 大数据WEB阶段Maven安装配置与使用
  3. 检测单击鼠标左键并拖动的消息_3-75 通过鼠标选择文本
  4. iframe跨域通信的通用解决方案-第二弹!(终极解决方案)
  5. 奇文:金庸小说中的第一高手是谁?
  6. java基本变量的堆栈_JAVA经验谈:尽可能使用堆栈变量
  7. 智能手持设备产品设计“八戒”
  8. bim webgl 模型 轻量化_BIM模型轻量化是什么?BIM模型轻量化原理
  9. c语言devc 怎么学,C语言(枚举,DEVFORGE学编程社区)
  10. Facebook自动化测试札记
  11. Pyramidal Feature Shrinking for Salient Object Detection阅读笔记
  12. 统计csv表格中某一元素的个数(count函数)
  13. 微信引流推广:美拍视频简单的引流方法分享
  14. ubuntu安装软件失败无法安装其他软件的解决办法
  15. 【重识云原生】计算第2.6节——裸金属方案
  16. MySQL Online DDL学习笔记
  17. Silverlight之变换(6)
  18. MySQL 精选问答 500 题
  19. Windows11 安装IIS的步骤
  20. C#基础 string Split 用字符分割字符串,删除空白项

热门文章

  1. 【集合类】hashmap扩容
  2. clickhouse数据库设置密码
  3. DNSPod十问徐樱丹:如何破解To B市场营销的增长困局?
  4. 十八个生活秘诀让男人永保青春
  5. 关于yuv 格式-Semi Planar和Planar
  6. 老王和的小王职场爆笑
  7. Markdown没能生成表格问题
  8. mysql sql 子查询 执行顺序_MySQL,SQL语句执行顺序
  9. 童心制物布局国内STEAM 教育:5月将发布2款新品,未来同时聚焦B端和C端
  10. credssp加密oracle修,window远程桌面解决“CredSSP加密Oracle修正”问题