我做过两三个android客户端应用的整体设计和部分的编码,这里仅仅谈一下设计方面的故事(此乃原创2015:11:02)。

做客户端设计,首先要考虑应用所在的环境,包括三方面:1 要设计的apk是在一个低内存,低运行速率,多应用共同运行(现在很多应用都在后台一直存活,不死鸟)的环境中;2 要设计的apk需要调用系统其它的数据或功能接口;3 apk置身于整体手机的运行环境中,必然手机的各种状态的变化,会对apk的运行造成影响,例如开网断网,亮屏灭屏等。

从1来考虑,必须要在设计之初,从数据流考虑apk运行时内存中所持有的数据量要小,不用的数据尽量不要加载到内存,用过的数据尽量释放。因为数据如果一直占据内存,会产生两个问题:一个是导致程序运行减慢,二数据的一致性会受到挑战。这里需要特别说明的是,有些buger认为数据一直占据内存,会使得存取路径减少,从而速度提高,但是通过亲身体验,从数据库里面加载数据和内存中加载少量数据,感觉不到差异。但是大量数据占据内存,就会使得本身的内存紧张,运行就会卡卡,而且还需要花线程维护数据库,内存,界面的数据一致。因此我认为不利因素大于有利因素。

从2来考虑,设计的apk可能因为业务需要,调用手机中其他共享的数据或者功能接口,例如联系人数据,短信数据,日历数据,或者录像功能,拍照功能,打电话功能等。需要在设计之初路罗列出这些接口,最好对这些接口进行正确性测试,保证功能能够满足要求。理论上讲,这些属于标准接口,应该不存在问题,但是各个厂商的手机不一定能够完全保证。 此外某些特殊的硬件器件各个提供商的接口可能不一样。

从3来考虑,apk在运行时,可能会受到手机状态的改变,在接收到这些改变时,需要在业务级别做好相应的对应策略。例如在开网和断网时,和服务器的交互应该怎么处理等。在apk被切换到后台时的处理等等。这些需要提前在业务级别做好准备,避免在后来处理过程中出现二意。

综上所述,在设计之前,需要考虑的环境因素,越是考虑充分,设计时越是容易,不要把问题遗留到后期。

Android 客户端设计之环境考虑的更多相关文章

  1. Android 客户端设计之解决方案

    解决方案,是正对与需求来谈的.一个抽象的需求,需要一个较为上层抽象的解决方案来处理,这是病和药的关系.但是一个解决方案,可能会包含多个功能,每个功能都是解决方案上的一个节点.一个优秀的解决方案必然需要 ...

  2. 网易考拉Android客户端网络模块设计

    本文来自网易云社区 作者:王鲁才 客户端开发中不可避免的需要接触到访问网络的需求,如何把访问网络模块设计的更具有扩展性是每一个移动开发者不得不面对的事情.现在有很多主流的网络请求处理框架,如Squar ...

  3. Android 开发基础及环境配置

    2011年买了第一部安卓操作系统的手机,当时势头正盛的HTC不可思议(incredible),当时的想法就是想学习下智能手机开发,但是由于各种原因,客观上是公司的项目太忙了,忙于项目管理.团队建设.客 ...

  4. 微信Android客户端架构演进之路

    这是一个典型的Android应用在从小到大的成长过程中的“踩坑”与“填坑”的历史.互联网的变化速度如此之快,1年的时间里,可以发生翻天覆地的变化.今天在这里,重新和大家回顾微信客户端架构的演进过程,以 ...

  5. 转:微信Android客户端架构演进之路

    转自: http://www.infoq.com/cn/articles/wechat-android-app-architecture 微信Android客户端架构演进之路 作者 赵原 发布于 20 ...

  6. 《深入理解Android内核设计思想》

    <深入理解Android内核设计思想> 基本信息 作者: 林学森 出版社:人民邮电出版社 ISBN:9787115348418 上架时间:2014-4-25 出版日期:2014 年5月 开 ...

  7. MQTT协议学习及实践(Linux服务端,Android客户端的例子)

    前言 MQTT(Message Queuing Telemetry Transport),是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提 ...

  8. QQ音乐Android客户端Web页面通用性能优化实践

    QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化.本文将介绍 QQ 音乐 Android 客户端在进行 Web ...

  9. appium 自动化测试之知乎Android客户端

    appium是一个开源框架,相对来说还不算很稳定.转载请注明出处!!!! 前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecraz ...

随机推荐

  1. laravel之缓存配置文件

    清除之前配置文件缓存,并生成新的配置文件缓存, get bash: php artisan config:cache 如下图,以上命令会将config文件夹下所有的文件内容缓存到bootstrap/c ...

  2. FormatMessage与GetLastError配合使用,排查windows api调用过程中的错误

    前一段时间在学习windows api调用过程中,遇到过一些调用错误或者程序没能显示预期的结果,或者直接出现vc运行时错误. 这对新手来说是司空见惯的事,因为不太熟悉难免会出错,出错的信息如果能显示很 ...

  3. 引用模板中的类型时,切记要加上typename声明!!

    如题,发现实际操作中太容易忘记了,导致一些莫名其妙的编译错误,故在此记录!

  4. wcf http 代理

    两个我都还没试,先记录着,其实我也不咋懂,所以记录着,权当一个线索 第一种 wcf中设置代理是在bing类中设置的,比如 WSHttpBinding ws = new WSHttpBinding(); ...

  5. jvm 原理和优化

    在csdn 上看到的,觉得很好,收藏了: 原博文地址: 濤子 http://blog.csdn.net/ning109314/article/details/10411495/ JVM工作原理和特点主 ...

  6. WPFUIElement的Background的问题

    <Border Name="> <Border.Background> <VisualBrush> <VisualBrush.Visual> ...

  7. IE9下WebUploader上传图片跨域问题

    作为前端,这一次踩到后台xml配置的坑. IE9下上传图片通过flash插件,一直发送http://192.168.0.8:8888/crossdomain.xml请求,状态码为404,原因是上传图片 ...

  8. C++基础知识易错点总结(1)

    1. 在C++中,不能被重载的运算符有: sizeof . 成员运算符 .* 成员指针运算符 :: 作用域运算符 ?: 条件运算符 2. C++语言多态性:编译时多态和运行时多态: 编译时多态可通过函 ...

  9. 移动端字体缩放问题解决方案-摘自《html5移动web开发实践》

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  10. 算法入门笔记------------Day1

    1.C语言使用%d显示float值,不会把float值转换为近似的int值,而是显示垃圾值,使用%f显示int值,也不会把该int值转换为浮点值 2.三位数反转:输入一个三位数,分离它的百位,十位和个 ...