改用 Android 之后 II

在换到 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 自己不觉得有什么问题吗?

navigation_between_siblings_market2

  • 性能

你不得不承认的是即使有 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),或者说逐渐的让功能更加明确的出现在界面上。

text_input_textselection

写了这么多主要是对之前那一篇的重新认识和补充,在来稍微看看在开发方面的问题。

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 世界。

加入对话

1条评论

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据