惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
罗磊的独立博客
SecWiki News
SecWiki News
The Register - Security
The Register - Security
The GitHub Blog
The GitHub Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
IT之家
IT之家
博客园 - 聂微东
T
The Exploit Database - CXSecurity.com
Recorded Future
Recorded Future
大猫的无限游戏
大猫的无限游戏
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Vercel News
Vercel News
G
GRAHAM CLULEY
D
DataBreaches.Net
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
SegmentFault 最新的问题
博客园_首页
雷峰网
雷峰网
T
Tenable Blog
Spread Privacy
Spread Privacy
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Cisco Talos Blog
Cisco Talos Blog
V
Visual Studio Blog
J
Java Code Geeks
博客园 - Franky
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
C
CERT Recently Published Vulnerability Notes
T
Threatpost
Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
P
Privacy International News Feed
T
Threat Research - Cisco Blogs
T
The Blog of Author Tim Ferriss
V
Vulnerabilities – Threatpost
Recent Announcements
Recent Announcements
Blog — PlanetScale
Blog — PlanetScale
Security Latest
Security Latest
U
Unit 42
M
MIT News - Artificial intelligence
Y
Y Combinator Blog
K
Kaspersky official blog
有赞技术团队
有赞技术团队
B
Blog
腾讯CDC

博客园 - Jake Lin

在Objective C中定义私有的成员变量 解决Azure “Failed to start Storage Emulator: the SQL Server instance `.\' could not be found.” - Jake Lin UITableViewController与UIViewController中使用UITableView 解决An attempt was made to load a program with an incorrect format.问题 在Heroku上部署Node.js 重命名Heroku的app 如何在cocoapods中使用更新版本的pod 在iOS5或者以上修改Navigation bar的颜色 iOS 5解决Could not instantiate class named NSLayoutConstraint问题 四步开始使用Heroku 解决Azure中COULD NOT LOAD FILE OR ASSEMBLY问题 The copy of Windows is not genuine-微软自己用盗版 Azure:不能把同一个certificate同时用于Azure Management和RDP 解决Azure publish “the remote desktop configuration was not generated by windows azure Tools”问题 Xcode 4.5解决Storyboards are unavailable on iOS 4.3 and prior问题 一个跨设备的云数据平台parse.com Storyboard只支持iOS5.0或者以上的版本 Xcode4.4以后定义@property时可以省去@synthesize iOS处理Orientation
从Windows到Android开发
Jake Lin · 2013-01-25 · via 博客园 - Jake Lin

下面的链接是一篇不错的文章,虽然是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了。

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