从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,activitiesAsyncTasksXML layoutsservicesBroadcastReceivers 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了用户响应的话,用户马上就卸载了。

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

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

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

除了上述几个核心,其他东西,例如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,以后哪里都难用。

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

作者:Jake LinJake's Blog on 博客园) 
出处:http://procoder.cnblogs.com

作品Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言
 
标签: Android
原文地址:https://www.cnblogs.com/Leo_wl/p/2876963.html