Java程序员转Android开发必读经验分享

  小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为你们搜集资料,积极整理前人的经验,但愿能够给正处于困惑中的你,带来些许的帮助。php

Java程序员转Android开发必读经验分享

  啰哩啰嗦的说说Java和Android程序的区别:html

  Android是主流智能手机的操做系统,Java是一种开发语言,二者没有好坏优劣之分,只是两种职业岗位的选择。学安卓从事移动互联方向开发,学Java从事软件、网站开发。而安卓上的应用大可能是Java编写的,因此建议在安卓前期的Java学习阶段中,要用心学好。android

  言简意赅的说说“转”前的准备:程序员

  其实Java程序员要自学安卓开发的基础知识仍是没有什么难度的,毕竟语言相通,特性类似,阅读安卓源代码的门槛以比较低一些,做为可以考虑“转”的合格的程序员的你,自学能力和相关的基础知识应该不是问题,学习安卓也相对比较轻松一些。web

  因此Java程序员转安卓开发能够看作是一次“增量更新”,只须要学习一下安卓的基本组件:Activity、ContentProvider、Service、BroadcastReceiver;数据库

  了解一下安卓中的Intent,Handler,Adapter以及各种事件的传递方式(onClick,onTouch等);编程

  同时辅助必定的代码量,像JNI、AIDL什么的均可以看一下;设计模式

  你还要摒弃“UI元素像素位置”这个概念,安卓自己是容许经过设定元素位置来制做UI的,若是你这样作致使的结果即是大批机器不适配,那么显示效果就有点惨不忍睹了,因此不要妄想经过获取屏幕大小来调整UI,像LinearLayout在swing或者swt上无关紧要的东西,在安卓上是必需要精通的。浏览器

  还有熟悉ide,安卓提供的开发框架、Java及其余编程知识等。缓存

  固然,小编在此说的只是九牛一毛,还有不少在开发过程当中须要注意的细节问题是咱们没有提到的。

  下面小编跟你们分享一下前人关于技术开发转移动应用开发的经验,但愿对你们有借鉴的做用:

  刘铁峰,海豚浏览器CTO

  由于具体的开发场景不同,目标的读者的经验也各不一。分享一点转型过程当中,所须要补充的知识点和逻辑上的转变。

  移动开发和PC上的开发带来了哪些不同?

  在我看来,从2002年以后,传统桌面的开发者基本都转向了J2EE/.NET/LAMP等以Web技术或者服务器端开发技术为主的开发方式。使用C/C++/MFC/Delphi等开发C/S模式的用户愈来愈少,甚至工做的需求也开始变得愈来愈少。

  这样在技术体系上,开发者的经验开始基本上覆盖在:

  1.HTML + CSS + JavaScript

  2.各类脚本语言(PHP/http://ASP.NET/JSP/Python/Ruby)操做服务器API

  3.服务器数据处理逻辑(O/R Mapping, 数据库链接池,各类如AOP等设计模式,甚至DSL等等)

  4.大型服务器的架构设计(分布式架构,各类负载均衡,服务器链接优化)

  5.数据库(分布式数据库,事务处理,大规模数据的存储、查询优化)

  6.大数据处理(Hadoop, Hive)等等。

  那对于移动开发上须要什么?

  无论是Android / iOS /WP , 其实对于开发的需求上逐渐回到了2002年以前,大概类比MFC/Delphi的时代,更加合适。

  移动开发者的技能需求发生了转变,须要的经验变成了:

  充分理解各移动平台的进程架构和程序生命周期逻辑(程序启动,程序被系统suspend/kill, Services)

  1.界面设计(各类UI控件,事件处理)

  2.数据处理逻辑(客户端缓存、多线程并发)

  3.网络数据处理

  4.平台相关特性(系统API调用,系统通知机制等)

  5.各类性能处理。

  所以,在学习的路线和须要的经验上有了不一样。

  若是须要从非移动开发者往移动开发者进行转型,哪怕一样使用的是Java语言,须要的就是了解不一样的库以及处理不一样领域的具体问题。

  在移动设备的开发上,我归结为三大类问题:性能的问题,界面响应的问题,产品的稳定性。这些是技术人员能够须要最为注意和保障的。

   季逸超,Peak Labs创始人

  记得当时iPhone出来后,让人们看到了一个与传统的“窗口”彻底不一样概念的逻辑:界面方面一个应用占满整块屏幕,程序方面代码也都是在严格的沙箱内运行。当时我就意识到这将是一整套全新的规则体系,后来渐渐从表面往深层看,写了几年烂代码慢慢我也有了点心得:

  1.淡化文件的存在,而凸显应用和工做流。

  2.尽可能避让主线程/UI线程,避免锁界面。由于桌面应用锁UI的话只不过是一个窗口,而移动应用会给人感受是“手机”这个总体挂了...

  3.能迅速完成的操做/运算就不要期望后台,本身的程序随时可能被kill掉。后台只留给VOIP、网络操做之类的。

  4.尽可能加快启动速度。移动产品用的频繁,但单次使用远比桌面要短,因此不要出现Photoshop那样让用户傻等的状况。即便用个“假象”也要让用户以为启动挺快的。

  5.同一个功能最好有多种交互/操做方式。不像Windows一统桌面江湖,如今各个版本的android、iOS用户之间使用习惯迥异,最好能让人们的习惯都能work。

  6.最好不要让UI控件太显眼(好比街机游戏中硕大的摇杆遮住了人物),但也别太隐晦(猛犸浏览器4,哈哈哈)。

  7.用户其实很在乎耗电和发热量,桌面用户从不在意…

  8.不少功能别人说作不到或说平台不容许不开放的时候,总有人用匪夷所思的奇葩手段实现了…

  我的拙见请勿轻信哈~

  王思达,爱安卓,爱刷机,爱移动互联网

  从桌面端转向移动端,必定要认识到两者不一样的侧重点。桌面端包括web更侧重于逻辑复杂,高级的任务,而移动端的娱乐性明显更强。

  就从操做方式提及吧,桌面端主要靠鼠标键盘和touchpad,因此操做精度要高得多,很容易将不少功能集成到一个界面里;但一样的思路就彻底不适用于移动端了 (反例我是实在想不起来了,你们能够帮忙想一想),相信一个cluttered ui的app,就算功能再强大,用户盯着你的界面超过3s就会头晕,点击某个button要点好几下才会成功,也一定是一个糟糕的app。

  那什么样的操做方式是适用于移动端的呢?

  ListView的滑动操做就是一个很好的例子,不须要用户任何的思考,只需顺着期待的内容出现的方向滑动,这样 intuitive的设计即是王道。相似的设计还有来自Tweetie的下拉刷新,Android 4.0引入标准库的ViewPager等等。上述的操做都有一个共同特色——手势操做。既然移动端(无论是手机仍是平板)是拿在手上的设备,那手势操做成为其杀手锏就绝不奇怪了,天然也就成了区分移动端和桌面端的一个重要特质。PeakJi大神的猛犸浏览器和输入法(忘记名字了)一样也体现了这一点。

  有了简单直观的手势操做,还有一个不得不提的feature——push notification。用户很懒,一台机器装了上百个app,可能一个月你的app也就被打开一两次,这固然不是你但愿看到的。若是你的app是网站客户端性质的,那么push notification就是一个很好地利器了。怎么作呢?我总结了下面的流程:

  1. 与社交网络链接,获取用户资料,分析用户兴趣

  2. 记录用户在你的网站或客户端的使用习惯,逐渐逼近用户真正的兴趣

  3. 根据获得的用户兴趣,推送他感兴趣的内容

  能够看到,不只仅是“通知”那么简单,像新浪微博那样的,一天一条的palm news,多了只能让人感到annoying,并不能起到和用户很好的沟通的效果;只有推送用户感兴趣的内容,才会引发他们的注意,增长你的app在用户心中的权重。

  最后一点我认为很重要的,就是consistency,和操做系统要保持操做习惯的一致性。好比左上角的返回button,Android 4.0的ViewPager滑动换标签等,这样作最大的好处就是下降了用户的学习成本,让你的app和OS融为一体。固然在OS的大框架下,也不乏有新意的app,好比Android下的一款类siri应用Maluuba,大胆地采用了Metro风格的设计,但操做起来并不会以为陌生,最大的缘由就是 ViewPager的滑动操做被保留了下来。

  以上是各位前人的一些经验,你们能够根据本身的状况吸取消化,下面快送一些能够帮助到你们的书籍:

  推荐一:Head First Java(中文版)(第2版)(涵盖Java5.0)

  推荐理由:安卓应用层和大部分framework层用的都是Java语言。

  推荐二:疯狂Android讲义

  推荐理由:知识点比较全,也比较新。

  推荐三:深刻理解Android(卷1)

  推荐理由:做者的文笔流畅,看法独到,并且系统地,深刻地讲解了Android系统原理。同时做者那种层层递进,抽丝剥茧式的分析模块的手法也很是值得学习。

相关文章
相关标签/搜索