从Windows到Android开发

下面的链接是一篇不错的文章,虽然是2011年写的,但是说明Android开发的核心一直没变,fragmentation问题还是没有解决。

http://nick.typepad.com/blog/2011/08/from-windows-to-android-with-glassboard.html

根据自己学习Android开发的经验,我很赞同文章中的几点:

1.a new language (Java), a new IDE (Eclipse), a new platform (Android)

多多少少也要懂Java,虽然和C#很类似,但是用起来还是要有一段适应期。其实我在10年前做过差不多1年时间的Java,主要是做JSP。但是做Android还是很多不适应,特别是一些对事件处理的Interface(Listeners)。在Android界面的处理上,感觉大家的写法都不一样,例如按钮点击那么简单,有些人会implement Listeners的interface,而有些人用java inline class。而且Java是一门over Object Oriented的语言,总不习惯。

Eclipse,由于习惯了Resharper,所以我更偏向于IntelliJ IDEA,可惜其对编辑程序界面的支持不好,所以不得不在两个IDE上调来跳去。最终决定用Eclipse。感觉编辑,调试,快捷键等等都比不是VS,也比不上Xcode,主要是我不熟悉。

2.There's an awful lot to learn - intents,activities, AsyncTasks, XML layouts, services, BroadcastReceivers and on and on and on

这些都是Android开发的核心,要写好Android开发就是不断的熟悉这些概念。下面是我对这些组件的理解:

intents是各个组件通信时的载体。好像在Windows Phone和iOS中没有找到相对应的概念。

activities是功能的实体,由于大部分的Activities都与用户交互,所以其通过setContentView(View)启动用户界面。最关键的部分是学会它的生命周期

State diagram for an Android Activity Lifecycle.

AsyncTasks,异步处理,现在的用户已经要求很高了,如果那个手机app是一直挂着,block了用户响应的话,很可能用户马上就卸载了这个app。

XML layouts,有点类似于XAML,但更像HTML,对各种机器分辨率支持是难点,除此之外,这个Layout系统不难。

services,后台服务,其他平台(iOS和WP,Windows8)梦寐以求的功能,但是这也是能耗的杀手,用的时候要权衡。

BroadcastReceivers,用于接收intents,为其他模块提供相应的服务功能,我觉得这是Android比其他平台先进的地方,Windows Phone8和Windows8实现了一部分,通过URL来实现app之间的交互,我预计iOS7会新增的相关app互相调用的功能。

 

除了上述几个核心,其他东西,例如GPS,地图,HTTP访问网络,RESTful api,JSON等等各个平台都一样,只是实现上有点差异。

 

个人感觉,从开发者角度来看,学习和开发的难度如下

iOS <= XAML(Windows Phone/Windows 8)< Android

由于iOS有大量的开源实现,大大地减低了开发难度,而XAML平台有微软的支持和VS等强大的工具,难度与iOS差不多,对我来说Android是最麻烦的。但Android的目标设备最广,不仅仅可以在Android手机和平板上使用,还可以通过BlueStacks在Windows上使用,也可以在BB10和Tizen上使用。听说Meego也能用Android app了。我感觉Android开发平台就像手机的HTML5,以后那里都能使用Android app,真正实现Java一次编写到处使用的目标,Oracle真的要感谢Google了。

 

本文很多主观看法,欢迎拍砖,我会轻微还击,^_^

posted @ 2013-01-25 10:28  Jake Lin  阅读(4182)  评论(11编辑  收藏