1.Java基础
不少朋友一上手就开始学习Android,彷佛太着急了一些。Android应用程序开发是以Java语言为基础的,因此没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。那么Java学到什么程度才算是过关呢?我我的认为至少要掌握如下两个方面的内容:
a) Java基础语法:具体的知识点列表能够在这里下载:《Java知识点列表》V1.0。这部份内容没有讨价还价的余地,必须烂熟于胸。至于具体的学习方法,能够看书或者是看视频,可是关键是要多加练习,不管是书上的练习仍是视频里面的练习,都须要仔仔细细的完成;
b)设计模式:因为在Android系统的框架层当中,使用了大量的设计模式,若是没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类很是之多,一个一个的所有掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,就能够触类旁通。这部份内容能够在《Effective Java》和《Agile.Software.Development:Principles,Patterns.and.Practices》这两本书中找到。
2.Linux基础知识
你们都知道,Android系统的基础是Linux操做系统。在开发过程中,咱们也须要使用到一些Linux命令。因此说一些Linux的基础知识是必须的(话说如今的程序员,不懂Linux都很差意思跟人家打招呼),推荐你们看看《鸟哥的私房菜》这本书,写的至关不错;
3.数据库基础知识
这个比较简单,就是一个增删改查的数据库操做,能够看一下这本书:《SQL编程练习与解答》
4.网络协议
至少须要学习两种基础的协议,HTTP协议与Socket协议;
5.Android基础知识
有了以上的铺垫,再来看Android,是否是以为轻松了不少呢?至于基础知识的学习顺序,最好的方法就是按照Android SDK帮助文档当中的Dev Guide里面的顺序,个人《Android视频教程》也基本上是按照这个顺序录制的;
6.服务器端开发知识
因为不少Android应用程序都须要服务器端的支持,因此掌握一些服务器端开发知识仍是很是有必要的。至于选择哪种服务器端知识进行学习,就比较麻烦了,由于技术的种类实在是太多了:
a)Java EE:就是上面邮件当中所提到的SSH—Struts+Spring+Hibernate。这种技术的优势的功能完整、强大,已经使用了不少年,并且既然你们已经很是熟悉Java了,那么学习SSH看起来也瓜熟蒂落。可是使用这种技术开发服务器端程序,很是麻烦。即便是一些简单的功能,也可能须要大量的代码和配置文件来实现;
b)PHP:简单易学,开发快速。可是咱们须要多学一种语言,是否得不偿失,就要你们本身判断了;
c).NET:这项技术的特色和Java EE差很少,可是要想掌握.NET,则须要掌握c#,也是个麻烦的事情;
d)ruby on rails:这是我我的最喜欢的服务器端技术,简洁,优雅,寥寥几行代码,就能够实现很复杂的功能,可是这须要Ruby语言知识做为基础;
至于选择哪种技术,就看你们本身的判断了。
梦想:要成为一个专业的Android开发者,以上的这些知识都必不可少。看起来好像不少,多的可怕。因此仍是那句话--“耐心,耐心很重要”。java
附表:java知识点列表:程序员
1 开发环境数据库
Java SDK 下载和安装
环境变量的配置(path和classpath)编程
2编程基础:c#
标识符命名规范
Java数据类型
运算符与表达式
分支语句(if,switch)
循环语句(for,while)
函数的定义方法设计模式
2面向对象基础:ruby
面向对象与面向过程语言之间的区别3面向对象高级:服务器
面向对象基本思想(继承)
继承的做用
继承的语法特色
super的使用方法
面向对象基本思想(多态)
对象的向上转型和向下转型
final关键字的做用
抽象类和接口的定义方法
接口和抽象类的语法特征
抽象类和接口在面向对象编程当中的地位和意义网络
设计模式(工厂方法模式)
Java当中异常的定义
异常的分类以及各自的特色
try…catch…finally 结构的处理方法
throw和throws 的使用方法
自定义异常的使用方法
内部类的定义方法
匿名内部类的定义方法
内部类的常见使用方法框架
4线程:
线程的基本定义
在 Java 当中实现线程的两种方法(使用Thread 或Runnable)
线程运行状态介绍(准备,运行,阻塞,死亡)
线程间通讯的方法
线程同步
线程死锁
5IO
IO 基本概念:
输入流和输出流的做用
Java当中IO 流的分类方法
常 见 IO 类的使用方法(File,FileInput,FileOutput,Reader,Writer以及其子类的使用方法)
6常见类库:
类集框架中常见类的使用方法(ArrayList,LinkedList,Queue,Stack,HashSet,HashMap)
日期相关类的使用方法(Data,DataFormat,Calander)