background image

用户体验导向的

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),便是这个问题的升级版。要