使用网络服务
软件作为一个服务--Software as a service(SaaS)和云计算变得越来越流行,作为公司努力去减少相关的软件安装,升级,维护的开支的手段。
这样的趋势也导致出现了一系列的网络服务,你可以以此来建立瘦客户端程序,利用丰富的网络服务来构建APP。
现在的网络服务有好多,列出几个主要的:
1.Google Services APIs
区别与本地的Google APP,Google提供了网络版的API,使你能够去访问他们的日历,文档,博客,毕加索网络相册平台。这些APIs都是以XML作为数据交换。
2.Yahoo!Pipes
不是很懂。
3.Google App Engine
使用Google App Engine 你可以创建一个托管云,将手机端APP复杂的操作移到云端处理。Google还提供了Cloud Storage和Prediction APIs服务。
当你自己写个WEB服务,可是服务器你要自己维护的,而使用GAE,你的程序是基于Google的服务器的,你无需维护,Google帮你维护。
具体细节请百度。
4.Amazon Web Service
Amazon提供了一系列的基于云端的服务,包括一些丰富的APIs服务来访问它的书,CD,DVD等一些媒体相关的数据库。Amazon还提供一个分布式的存储解决方案(Distributed storage solution --S3)和有弹性的云计算Elastic Compute Cloud(EC2)。
关于网络服务的细节这里不讨论了,大家有兴趣自己可以去百度。
最好的方式去下载数据,而不是耗光你的电
这是典型的3G无线电状态机。
1.当连接活跃的时候,比如传输数据的时候,将处于Full Power状态。耗能是最多的。
2.Low Power 相对耗能是满状态的一半。
3.Stanby 低耗能状态,无需要活跃的连接。
此图可见,假设你下载只花1了秒钟,那么接着会有17秒的状态转化,这个转化时间也是耗电的。我的意思是,比如你每隔17秒下载1次,且每次都只下载1秒钟,可见这个电量白白被好废在状态转化上了。所以为什么说1次性的预取数据多点。(当然不是说你老下载大量无用的数据,这个自己判断)
再者转回到活跃状态是有延迟的,所以你频繁断开,又连接,只会使延迟更明显。
你如何去下载数据,对你手机的电量影响很大。关于物理的知识就不解释了,需要注意点列出:
主要的原则就是:尽量减少连接的次数,珍惜每次连接,尽可能多得下载,而不是分开多次下载。
1.预取数据 比如你APP刚启动,预先加载部分数据,而不是不间断下载更新。
2.批处理下载任务。比如这部分你要更新,那部分也要更新,你可能会因此创建2个或者多个连接,其实你可以将其加入队列,合适的时候,批处理更新。
3.重用已存在的连接,而不是创建一个新的。这样可以动态得减少延迟,提供网络的表现。
4.重复下载的次数频率尽量少。比如App更新的频率,设置默认的更新频率尽可能低点,如果你的用户非要更新频繁点,那么你给他提供设置即可。