感谢 SUN的投递
在换到 Moto Defy 进入 Android 阵营之后,曾经写过 一篇博客,对比 iOS 系统和 Android 系统。这篇博客被一些网站转载( 1, 2)后,被各种“大神”们 猛喷。现在 Defy 已经用了快半年,期间也接触过一些别的 Android 手机,最近实验室的项目更是进入了 Android 开发领域,是时候再写一篇,进一步写一写使用的感受。这次就不做对比了,因为手头没有运行 iOS 5 的苹果设备,而且也没有怎么用过新的 iOS。
先看一看之前那篇中写到的观点。
同步
我始终还是认为,iOS 的同步是一个很好的方法,在音乐和视频传输、应用程序安装和数据备份方面都有明显的优势。
音乐和视频方面,同步可以自动处理变化的音乐,自动完成整理。而手动拷贝对于我这种有数据洁癖的人来说实在是很麻烦,有 的时候音乐目录结构变动比较大,不得不将音乐全部删掉再重新从电脑拷贝到手机。不过 Android 可以播放几乎任意的视频格式的能力的确是非常方便,这点事之前有所忽略的。
对于应用程序的安装,同步的方法相对封闭,但是至少保证在不“越狱”的情况下,有且只有一个官方市场可以发布和安装应用,也许用户会有抱怨,但是有 利于开发者的生态环境的发展,当有了良好的开发环境,有了高水平的应用程序,开发者可以得到较好的收入的时候,用户的抱怨自然就会减少。不过看过了乔总传 才知道原来乔总一开始没准备开放 SDK,也没有 App Store。唉,乔总你控制欲也太强了。
至于数据备份,iOS 升级前先同步一次,然后升级完成后再同步回去,基本就可以保持原状,至少应用不用再一个个装一遍。Android 也有第三方备份,但是刷个机再恢复到原状还是很麻烦。
以上这些, @灿若晨光 应该有一些体验的。
SD 卡
Android 可以用 SD 卡的确很方便,至少比如实在是没法直接通过手机往里面拷文件的时候,把 SD 卡拿出来直接用读卡器拷贝算是个杀手锏的解决方法,而且应用的个人数据在 SD 卡上,恢复会变得很容易。不过 SD 卡使用 FAT 文件格式基本就直接撞上了微软的专利墙,这估计也是 Android 永远的痛。
触屏
用习惯了就知道不同机器的触屏的特点,之前说的很难按虚拟键盘的问题,现在也逐渐熟悉,Defy 似乎就要稍微偏左一点比较容易按到正确的键。这个基本上是各有特点,没有明显的优劣之说。
物理按键
还是保持上一篇的态度,物理按键还是应该越少越好,而且 Nexus Galaxy 也开始用虚拟的底部按键替代物理按键了。现在的应用也逐渐开始在界面上布置返回按钮,Android SDK 的 设计指南中也开始提出应当在界面上布置返回按钮,使得应用能够快速回到它自己的主屏幕(注意不是系统的主屏幕)。不过看看设计指南中的插图,如此复杂的导航路径,Google 自己不觉得有什么问题吗?
性能
你不得不承认的是即使有 JIT 的 支持, Dalvik Java 虚拟机也不能和 Native Code 的性能相提并论。 这里也 有更详细的细节解释了为什么 Android 的界面似乎没有 iOS 流畅的原因。总的来说,Android 在界面渲染方面也开始吸收 iOS 的一些想法,比如浏览器内容使用贴图(tiles,不知道翻译的对不对)而不是持续渲染(continually rendered to the screen),从而得到更好的滚动和缩放效果,虽然贴图外面的网页内容要等一会儿才能显示,但是随着机器硬件性能的提高,这点损失还是可以逐渐被弥补 的。
另外一点不得不提的仍然是多任务。Android 真正的实现了类似 Windows 的多任务,应用界面退出后,进程仍然在后台运行,这样的好处是得到了类似 Windows 的多任务特性。但是毕竟这是手机,后台进程持续的消耗内存和 CPU,影响正在执行的应用。而且由于手机不像 Windows 可以很容易将后台进程关闭,手机变得很卡后关闭那些消耗资源的应用变成了困难的事情。
复制粘贴
之前一篇里面,我写到 Android 的复制粘贴难以使用,很多人说我没有用透,所有才会这么说。用到现在,我觉得的确复制粘贴没有之前想象中那么难以使用,但是还是不太好用。比如要选择几个 单词进行复制需要这些步骤:1. 将光标定位到需要选择的文字附近 2. 在输入框空白的地方长按出菜单,选择“选择文字” 3. 移动两边的选择控制,选择需要的内容 4. 在输入框空白的地方长按出菜单,选择“复制”。同样的操作在 iOS 上是这样的:1. 将光标定位到需要选择的文字附近 2. 在悬浮菜单上选择“选择” 3. 移动两边的选择控制,选择需要的内容 4. 在悬浮菜单上选择“复制”。同样是 4 步,但是要注意的是“在输入框空白的地方长按出菜单”有时是很困难的,尤其是单行输入框,要把菜单调出来还真有点难度。在 iOS 上,手指始终保持在需要关注的文字内容附近,而在 Android 上的操作则需要手指移来移去。另外“长按菜单”这种操作不明确,也没有明显的提示说哪里可以长按,哪里不需要长按。
Android 4 的设计指南插图上出现了复制粘贴菜单栏,基本上还是走到了 iOS 的道路上(Google 还是在努力的让 Android 看起来不那么像 iOS),或者说逐渐的让功能更加明确的出现在界面上。
写了这么多主要是对之前那一篇的重新认识和补充,在来稍微看看在开发方面的问题。
Android 的开发环境基于 Eclipse,总的来说还是挺方便的。 SDK 的开发语言是 Java,Java 使得开发的门槛降低,但是带来了很明显的缺点版权问题和性能。版权问题刚好撞上了 Oracle 收购 SUN,乔总曾经说过要想尽一切办法毁灭 Android,而 Oracle 的老板 埃里森恰好是乔总的好友,所以 Oracle 会在 Java 的问题上和 Google 开战的确是不可避免的。性能问题不仅仅是之前提到的运行效率低于 Native Code,还有一个问题是 Java 使得开发者不需要去仔细考虑资源分配和内存回收,因为有 GC 去做这些事情。但是必须注意的是,这里的运行环境是手机,作为内存寸土寸金的运行环境,一旦开发者有意或者无意的造成了一些浪费,许多应用这种积少成多,很快资源就消耗殆尽。
Android SDK 还有一个重要的问题就是版本和实现比较混乱,Android 快速的进化使得 SDK 也迅速的进化,现在的 API Level 已经到了 15。开发者在使用新特性的时候还要考虑兼容之前的版本,要么使用某些方式绕开 API 版本的限制,要么就让低版本直接无法做到某些功能,开发过程变得更复杂。不同手机厂商之间对于函数的实现还有所不同,不同的手机上会出现一些莫名其妙的问 题,使得调试变得复杂和麻烦。
总的来说,Android 似乎直到 3 的时候也不是很明确自身的特点,开发文档也没有明确的指导要求应用需要遵循的规则。来到 4.0 之后,Android 终于找到了自己的风格,比如横向滚动的界面,2D 化的控件,线条和镂空形式的图标,以及蓝白灰黑的颜色系统。新的设计指导也终于明确的了界面设计需要遵循的统一风格,终于 Google 似乎在努力统一 Android 混乱的环境。会不会在某一个版本,Google 决定甩掉之前快速进化留下的低版本包袱,重新统一 Android 世界。