WEB开发网
开发学院手机开发Android 开发 控制Android应用程序的耗电量 阅读

控制Android应用程序的耗电量

 2012-11-27 14:23:37 来源:WEB开发网   
核心提示: 来看看Android手机的电量都主要消耗在了什么地方:显而易见,大部分的电都消耗在了网络连接、GPS、传感器上了,控制Android应用程序的耗电量,简单的说也就是主要在以下情况下耗电比较多:1、大数据量的传输,2、不停的在网络间切换,3、目前大部门网站都支持GZIP压缩,所以在进行大数据量下载时,3、解析大量的文本

 来看看Android手机的电量都主要消耗在了什么地方:

显而易见,大部分的电都消耗在了网络连接、GPS、传感器上了。
  简单的说也就是主要在以下情况下耗电比较多:
  1、大数据量的传输。
  2、不停的在网络间切换。
  3、解析大量的文本数据。
  那么我们怎么样来改善一下我们的程序呢?
  1、在需要网络连接的程序中,首先检查网络连接是否正常,如果没有网络连接,那么就不需要执行相应的程序。
  检查网络连接的方法如下:
ConnectivityManager mConnectivity; TelephonyManager mTelephony; …… // 检查网络连接,如果无网络可用,就不需要进行连网操作等 NetworkInfo info = mConnectivity.getActiveNetworkInfo(); if (info == null || !mConnectivity.getBackgroundDataSetting()) { return false; } //判断网络连接类型,只有在3G或wifi里进行一些数据更新。 int netType = info.getType(); int netSubtype = info.getSubtype(); if (netType == ConnectivityManager.TYPE_WIFI) { return info.isConnected(); } else if (netType == ConnectivityManager.TYPE_MOBILE && netSubtype == TelephonyManager.NETWORK_TYPE_UMTS && !mTelephony.isNetworkRoaming()) { return info.isConnected(); } else { return false; }
 

 2、使用效率高的数据格式和解析方法。

  通过测试发现,目前主流的数据格式,使用树形解析(如DOM)和流的方式解析(SAX)对比情况如下图所示:
  很明显,使用流的方式解析效率要高一些,因为DOM解析是在对整个文档读取完后,再根据节点层次等再组织起来。而流的方式是边读取数据边解析,数据读取完后,解析也就完毕了。
  在数据格式方面,JSON和Protobuf效率明显比XML好很多,XML和JSON大家都很熟悉,Protobuf是Google提出的,一种语言无关、平台无关、扩展性好的用于通信协议、数据存储的结构化数据串行化方法。有兴趣的可以到官方去看看更多的信息。
  从上面的图中我们可以得出结论就是尽量使用SAX等边读取边解析的方式来解析数据,针对移动设备,最好能使用JSON之类的轻量级数据格式为佳。
  3、目前大部门网站都支持GZIP压缩,所以在进行大数据量下载时,尽量使用GZIP方式下载。
  使用方法如下所示:
 
import java.util.zip.GZIPInputStream; HttpGet request = new HttpGet("http://example.com/gzipcontent"); HttpResponse resp = new DefaultHttpClient().execute(request); HttpEntity entity = response.getEntity(); InputStream compressed = entity.getContent(); InputStream rawData = new GZIPInputStream(compressed);
 

1 2  下一页

Tags:控制 Android 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接