Android 客户端设计之环境考虑
我做过两三个android客户端应用的整体设计和部分的编码,这里仅仅谈一下设计方面的故事(此乃原创2015:11:02)。
做客户端设计,首先要考虑应用所在的环境,包括三方面:1 要设计的apk是在一个低内存,低运行速率,多应用共同运行(现在很多应用都在后台一直存活,不死鸟)的环境中;2 要设计的apk需要调用系统其它的数据或功能接口;3 apk置身于整体手机的运行环境中,必然手机的各种状态的变化,会对apk的运行造成影响,例如开网断网,亮屏灭屏等。
从1来考虑,必须要在设计之初,从数据流考虑apk运行时内存中所持有的数据量要小,不用的数据尽量不要加载到内存,用过的数据尽量释放。因为数据如果一直占据内存,会产生两个问题:一个是导致程序运行减慢,二数据的一致性会受到挑战。这里需要特别说明的是,有些buger认为数据一直占据内存,会使得存取路径减少,从而速度提高,但是通过亲身体验,从数据库里面加载数据和内存中加载少量数据,感觉不到差异。但是大量数据占据内存,就会使得本身的内存紧张,运行就会卡卡,而且还需要花线程维护数据库,内存,界面的数据一致。因此我认为不利因素大于有利因素。
从2来考虑,设计的apk可能因为业务需要,调用手机中其他共享的数据或者功能接口,例如联系人数据,短信数据,日历数据,或者录像功能,拍照功能,打电话功能等。需要在设计之初路罗列出这些接口,最好对这些接口进行正确性测试,保证功能能够满足要求。理论上讲,这些属于标准接口,应该不存在问题,但是各个厂商的手机不一定能够完全保证。 此外某些特殊的硬件器件各个提供商的接口可能不一样。
从3来考虑,apk在运行时,可能会受到手机状态的改变,在接收到这些改变时,需要在业务级别做好相应的对应策略。例如在开网和断网时,和服务器的交互应该怎么处理等。在apk被切换到后台时的处理等等。这些需要提前在业务级别做好准备,避免在后来处理过程中出现二意。
综上所述,在设计之前,需要考虑的环境因素,越是考虑充分,设计时越是容易,不要把问题遗留到后期。
Android 客户端设计之环境考虑的更多相关文章
- Android 客户端设计之解决方案
解决方案,是正对与需求来谈的.一个抽象的需求,需要一个较为上层抽象的解决方案来处理,这是病和药的关系.但是一个解决方案,可能会包含多个功能,每个功能都是解决方案上的一个节点.一个优秀的解决方案必然需要 ...
- 网易考拉Android客户端网络模块设计
本文来自网易云社区 作者:王鲁才 客户端开发中不可避免的需要接触到访问网络的需求,如何把访问网络模块设计的更具有扩展性是每一个移动开发者不得不面对的事情.现在有很多主流的网络请求处理框架,如Squar ...
- Android 开发基础及环境配置
2011年买了第一部安卓操作系统的手机,当时势头正盛的HTC不可思议(incredible),当时的想法就是想学习下智能手机开发,但是由于各种原因,客观上是公司的项目太忙了,忙于项目管理.团队建设.客 ...
- 微信Android客户端架构演进之路
这是一个典型的Android应用在从小到大的成长过程中的“踩坑”与“填坑”的历史.互联网的变化速度如此之快,1年的时间里,可以发生翻天覆地的变化.今天在这里,重新和大家回顾微信客户端架构的演进过程,以 ...
- 转:微信Android客户端架构演进之路
转自: http://www.infoq.com/cn/articles/wechat-android-app-architecture 微信Android客户端架构演进之路 作者 赵原 发布于 20 ...
- 《深入理解Android内核设计思想》
<深入理解Android内核设计思想> 基本信息 作者: 林学森 出版社:人民邮电出版社 ISBN:9787115348418 上架时间:2014-4-25 出版日期:2014 年5月 开 ...
- MQTT协议学习及实践(Linux服务端,Android客户端的例子)
前言 MQTT(Message Queuing Telemetry Transport),是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提 ...
- QQ音乐Android客户端Web页面通用性能优化实践
QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...
- appium 自动化测试之知乎Android客户端
appium是一个开源框架,相对来说还不算很稳定.转载请注明出处!!!! 前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecraz ...
随机推荐
- CSS浏览器兼容问题总结
为什么会出现浏览器兼容问题? 由于各大主流浏览器是不同的厂家开发的,所以使用的核心也不相同,架构代码很难重合,就会产生各种各样的bug. IE6中常见的css解析bug 1)默认高度(IE6)部分块元 ...
- Getting Started With Hazelcast 读书笔记(第八章-第十章)
第八章到第十章就是一些介绍性的描述,吹的就是Hazelcast能使用在各种地方.. 第八章 -从外面看 1.Hazelcast做了一个memcache的java实现,方便py和php使用. 2.可 ...
- ctrip
#-*-coding:utf8-*-from lxml import etreeimport requestsimport re#编码转换import sysreload(sys)sys.setdef ...
- Hibernate配置与事务管理
数据库中 @num:代表一个变量 Set @num = 10; Select @num+@num from dual; dual:临时表 得到结果 20 Hibernate:运用数据持久化,使用OR ...
- Forwards on Weibo (30)
BFS,题意比较难懂,是求离query L层的总共人数 #include <stdio.h> #include <string.h> #include <iostream ...
- VB中的API详解
一.API是什么? 这个我本来不想说的,不过也许你知道其它人不知道,这里为了照顾一下新手,不得不说些废话,请大家谅解. Win32 API即为Microsoft 32位平台的应用程序编程接口(Appl ...
- 一般多项式曲线的最小二乘回归(Linear Regression)
对于一般多项式: K为多项式最高项次,a为不确定的常数项,共k+1个; 有离散数据集对应,其方差: β为,方差函数S对β自变量第j个参数的梯度(偏导数): 当以上梯度为零时,S函数值最小,即: 中的每 ...
- DbExpressionBinding requires an input expression with a collection ResultType. 参数名: input
使用linq多表连接遇到的问题: 解决方案:注释为出错代码,更改使用GroupBy解决问题 context.ERG_TipOffsInfo.GroupBy(x => x.Data,(Data,C ...
- Linux下修改mysql密码
# /etc/init.d/mysql stop# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &# mysq ...
- bzoj1179(Atm)
---恢复内容开始--- 1179: [Apio2009]Atm Time Limit: 15 Sec Memory Limit: 162 MB Description Input 第一行包含两个整 ...