用户体验导向的
Android 应用开发
Android 开发目前是移动开发中的
“当红炸子鸡”,大量 Java 程序员涌向 Android,同时
会习惯性地将桌面和
Web 端的开发/设计经验带到移动设备上。这样的好处是充分利用了移
动开发和桌面
/Web 服务的共性,比如广泛使用的列表、本地数据库等常用组件;坏处是移
动和桌面
/Web 的使用场景和载体完全不同,直接移植桌面端开发的经验有害无益。
比如,手机主要在碎片时间使用,用户容易对复杂的界面设计感到疲惫;同时,移动
环境中上网慢,网络连接频率和失败重发机制的设计更有讲究;此外,手机电池续航能力
差,后台复杂的计算会加速耗电速度。这些开发理念直接影响用户最终体验,下面我们来讨
论一下在
Android 中如何以用户体验为导向进行开发优化。
虽然不用深入了解底层,但需要对系统有基本的了解。
Android 系统分层清晰,最底层
是
Linux Kernel 2.6,之上包含了 Webkit、SQLite、OpenGL ES 等基础 C/C++库,同时 Dalvik
虚拟机运行于
Kernel 之上,帮助应用进行底层内存管理(这样使 Android 应用无法直接进
行内存释放)。这些库一方面被系统大量使用,另一方面也通过
Framework 层提供接口给开
发者。此外,
Framework 层还提供其他系统级的服务,如消息通知服务、位置获取服务、设备
信息读取服务等。
由此可见
Android 对于开发者非常开放和灵活,尽管如此,开发时仍然要注意不要过
于随意,以免产品过于复杂而让用户不知所措。当然,除了少数系统级应用开发需要深入了
解
Framework 层实现机制之外,一般第三方应用开发者并不需要深入了解每一层原理,应
把重点放在如何理解和灵活运用庞大的
Android SDK API。
本文主要围绕用户的三种感觉来说明如何进行开发。
流畅的环境
让用户感觉使用非常流畅。迟缓会潜移默化地留下不好的印象。用户看见
App 的图标,
便会在心中和
“迟缓”、“卡”、“不稳定”画上等号,产生“打开畏惧症”。
用户滑动
Listview、Gallery、Coverflow 时觉得卡,多半是因为相应 Adapter 对 getView 的
处理不够好。每个
Item 都会和数据源绑定,而数据源的获取方式有多种:网络、本地文件 、
SQLite 数据库、SharedPreference 以及内存,它们的传输时间分别是 7 秒、2 秒、1 秒、100 毫秒、
5 毫秒。
对于最耗时的网络请求,很多人会采用异步操作,不会让用户耗费精力在网络等待过
程中。但在
I/O 以及 SQLite 查询时,用户的等待时间容易被忽略,从而降低滑动的流畅感 。
Android 用户常常遇到的 ANR(Application Not Responding),便是这个问题的升级版。要