Android应用开发工程师详细学习路线

    一个出色的Android开发工程师应该掌握哪些必要技能呢?我想应该掌握如下几个方面:

  1. 语言基础;

    语言基础应该掌握C语言开发和Java语言开发,有人会问学习Android开发还要学习C语言吗?是这样的。Android底层是由C语言和C++来实现并运行Linux平台上,上层应用才是Java语言实现的,我们经常通过Java JNI的方式来调用C和C++,如果不会C语言就不知道如何使用JNI,如何调用底层C和C++实现

2. Android 基本组件及编程思想;

    虽然Android应用由Java编写,但是,Android程序有自己的编程组件和编程思想,这在Java里面是找不到的。Android程序是基于配置的编程,包括组件之间的依赖关系,这就是你很少看到Android中有new这个关键字,这些编程风格和思想是贯穿整个Android开发全过程的,所以是必须掌握的。

3. Android UI;

    任何一款App,不管功能有多强大,如果外观丑陋,用户就会立刻丢掉,去寻找其它的,所以,UI的选择、设计与实现及其UI的性能优化都是必须要掌握的。

4. Android 高级模块;

    Android应用非常广泛,网站客户端,GPS定位,游戏,工具软件,应有尽有,实现某种应用就应该掌握某个模块知识,例如:开发客户端就应用掌握如何实现网络通信,如何使用多线程,如何解析数据。实现一款GPS定位就应该掌握GPS定位相关知识。实现一个音乐播放器,就应该掌握多媒体的知识,所以高级模块也是必须要掌握的。

5. Android 项目;

    这是我们的最终目的,我使用Android开发,最终要学会做项目,做好项目,这就好比是盖房子,你盖第一座房子可能不太满意,当你盖第三、四座房子的时候就得心应手了,所以要通过多个项目练习来掌握开发完整项目的本领。

 

这里我整理了一些android学习的几个阶段任务,有意成为攻城狮群体的你可以参考一下:

 

这里我分为五个阶段;

 

第一阶段(Android开发基础)

本阶段是打基础的阶段,目标就是:了解Android项目结构、使用模拟器运行Android程序、了解Android程序的调试方法、了解行业背景、了解Android框架、搭建Android开发环境、在Android开发环境下开发第一个程序

 

Android编程基础

 

――Java语言基础 

  数据类型,变量、常量和数组;

  运算符和表达式,分支,循环;

  使用Android基础控件,实现输入输出

  算法和常用数据结构

  软件编程规范

要主动去掌握Java基本语法,深入理解变量、表达式、运算符、流程控制、算法初步、软件编程规范等相关内容。

 

――OOP编程 

  面向对象编程(OOP),类和对象;

  继承和组合,this和super关键字,属性(Property);

  方法重载和封装

  访问修饰符、static和final关键字的使用

  方法重写和多态

  内部类和静态类

  常用设计模式

掌握Java语言高级特性,理解面向对象编程思想,掌握封装,继承,多态三大特性。

 

――Java核心API 

  正则表达式

  反射

  集合框架

  IO操作

  MVC模式

  多线程

  Socket网络编程

深入了解Java中的相关API

 

Android UI基础 

  Android中的5大布局

  Android中的常用控件

  Android中的事件处理

  系统菜单和上下文菜单的使用

  对话框的使用

  Activity的跳转

掌握Android中的常用布局和控件,对话框的使用,Activity的跳转和生命周期

 

第二阶段(服务端技术)

 

数据库、JDBC和XML 

  SQL语句基础和提高

  SQL语句调优

数据库设计基础

JDBC核心API(Connection、Statement、ResultSet)

XML基本语法

XML解析

掌握MySql数据库技术,使用JDBC技术连接数据库,掌握XML的语法及解析

 

HTML/CSS 

HTML基本文档结构

HTML中的各种元素

HTML中表单的使用

CSS规范

CSS选择器

CSS的常用属性

使用CSS实现页面布局

掌握HTM的L页面设计、编写,熟练使用Css样式话HTML

 

Servlet和JSP 

  Web服务器的工作原理,Tomcat的安装和启动

  在Tomcat中配置虚拟目录与发布Web应用

  Servlet的生命周期

  Servlet核心API

  Session和Cookie的使用

  JSP的基本语法

  JSP标签库

  JSP编程技巧和经典设计模式

掌握Servlet和JSP技术,能够独立完成B/S结构的应用开发

 

第三阶段(Android核心技术)

 

数据存储 

  通过Context获取Android中的内部和外部数据存储目录

  偏好设置文件的读写和偏好设置框架

创建和访问SQLite数据库

使用SQLiteDatabase对象实现数据库操作

使用Cursor遍历查询结果

使用SQLiteOpenHelper初始化数据库和升级数据库

定义ContentProvider共享数据

使用ContentResolver访问ContentProvider

Http协议详解

使用HttpUrlConnection访问Http服务端

使用HttpClient访问Http服务端

使用SAX方式解析XML

使用Pull方式解析XML

掌握Android中的存储技术:IO、偏好设置、数据库(SQLite)、ContentProvider和网络存储

 

线程通信 

了解ANR

使用多线程技术解决ANR问题

了解线程通信技术原理

Handler和Message

使用多线程实现图片的异步加载

封装Android中的线程通信模型、AsyncTask

在工作线程中创建消息队列、HandlerThread

了解ANR产生原理和单线程模型,掌握Andorid中的线程通信技术和Andorid程序设计技巧

 

Android组件 

  Android中的进程优先级

  Service组件的生命周期

  使用IntentService执行异步任务

  隐式意图的过滤(Intent和IntentFilter)

  Intent的六大属性

  广播、有序广播和驻留广播

  使用BroadcastReceiver接受广播

  使用ContentResolver访问媒体提供程序

掌握Activity和Service的生命周期,掌握Intent的六大属性,熟练使用显式意图和隐式意图。掌握广播接收器的使用。使用媒体提供程序管理Android中的图片和音视频资源

 

电话技术 

使用联系人提供程序管理和查询通讯录

使用Calls相关API实现通话记录管理

使用Intent拨打电话

使用广播接收器监听电话呼出

使用TelephoneyManager监听电话呼入

使用AIDL接口Itelephony实现挂断电话

使用SmsManager发送短消息

使用广播接收器监听短信接受

使用内容提供程序实现短信记录管理

使用内容提供程序+内容观察者实现发送短信监听

使用电话技术实现接打电话,收发短信,掌握电话和短信的监听机制。使用内容提供程序管理电话联系人、通话记录和短信息记录

 

GPS及位置服务、GoogleMap服务、BaiduMap服务 

使用LocationManager获取当前位置

基站三角定位和GPS定位

自动判断最佳定位服务来源

Google地图的组成元素

MapView的使用

控制地图、缩放地图

为地图添加图标

掌握GPS定位技术,掌握GoogleMap相关的API,结合使用地图与定位功能

 

Android4.x新特性 

Fragment碎片

ViewPager

ActionBar

熟练掌握Android4.0新增技术和Android兼容包中常用类的用法

 

第四阶段(Android高级技术)

 

Android高级绘图 

 图片和文字特效

 动态背景

 自定义动画

 音乐示波器

掌握Android自定义图形绘制,具备开发复杂控件效果的基础

 

Android高级控件 

 ListView、GridView的拖动

 双向调节的滚动条

 根据需要弹出的快速功能框

 弧形排列的控件

掌握Android高级自定义控件的开发。能够根据需要,开发定制控件

 

商业应用项目结构分析及设计 

 商业项目中的界面功能组织以及导航

掌握正确使用各种资源

 如何使用欢迎屏幕和新手导航

 网络操作的基本封装

掌握商业软件在开发初期,如何搭建项目基本机构,如何在界面和后台功能之间进行通信。以及如何正确的组织各种资源

 

第五阶段(Android项目实践)

到了这一阶段就意味着真正开始android开发的生活了,这时就需要用一个真正的项目来练练手了(当然,前面每个阶段都不能脱离项目练习)。比如做手机卫士、影音软件之类的项目。这类项目网上有很多源代码可供下载,跟着源代码慢慢学习效果会事半功倍。

做好这五个阶段只能说明你已经步入了程序员的行列,但技术远不止这些。IT行业需要不断探索的精神。

 

好了,最后,共勉!

 

 

 

你可能感兴趣的:(android,关键字,开发工程师)