标签:android开发
基础是一门语言的基石,掌握了基础才能致用,对于一门语言包含哪些基础知识点我们更应该了然于胸,想了解熟知Android应用开发,
那么就要了解它对应的内容。
1.基础篇
主要包括界面布局、Form表单、富媒体以及一些高级自定义控件和布局layou、引用数据value及图片drawable、动画anim等 R资源
1)布局
RelativeLayout,LinearLayout,FrameLayout,TabLayout,AbsoluteLayout(废弃)
2)控件
ListView,ViewPager,Fragment,WebView,PopupWindow,Dialog,Notification,ViewFlipper,ActionBar,Picker,
SurfaceView等稍复杂控件
3)资源
drawable元素,anim动画元素,color颜色元素,layout布局元素,value通用资源元素,raw通用文件元素,assert静态文件元素,
xml通用元素等资源
4)动画
Android平台提供了一套完整的动画框架,在Android3.0之前有两种动画,一种方式是补间动画Tween Animation、另一种叫逐帧动
画Frame Animation(也称Drawable Animation ),Android3.0以后增加了属性动画Property Animation
4)四大组件+Intent意图
a)Activity
Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,
妥善管理生命周期以及一些跳转逻辑
b)Service
后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事务,定义好需要接受的Intent提供同步和异步
的接口
c)BroadcastReceiver
接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型
d)ContentProvider
是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,
屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径
e)Intent
Intent(意图)主要是解决Android应用的各项组件之间的通讯。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进
行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在
这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦
5)Handler/Message
在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化。有关Handler的作用,可以总结为:与其他线程协
同工作,接收其他线程的消息并通过接收到的消息更新主UI线程的内容
6)数据存储
Android提供了几种存储方式,可以根据不同的业务需求选择最合适的方式,我们必须了解每一种存储方式的存取方法和关键点,
具体存储方式有SharedPreferences、文件、SQLite数据库、ContentProvider存储、网络存储
7)网络通信
如果你做的不是单机版应用,必定会用到网络通信,换句话说,凡是和外界服务器交互的都要用到网络通信,网络通信根据不同
的系统需求也分很多种,Android中最主要两种有基于TCP/IP的Http通讯和Socket通讯,另外还有一些基于两种通讯方式封装的通
信应用协议,如XMPP,Android自带封装的Http通讯对象HttpUrlConnection和HttpClient。对于网络通信这一块关系着一个应用的
请求、解析、传送、展示等各个环节,所以也是必须掌握的
2.提升篇
1)AsyncTask异步任务
AsyncTask是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程
度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程
2)进程间通信
由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象。
在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,
并且有序的通过进程边界。通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作。AIDL
(Android Interface Definition Language)是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(IPC)的
代码。如果在一个进程中(例如Acti vity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参
数。AIDL IPC机制是面向接口的,使用代理类在客户端和服务端之间进行数据传递
3)线程间通信
当Android应用程序运行时,一个主线程被创建(也称作UI线程),此线程主要负责处理UI相关的事件,由于Android采用UI单线程
模型,所以只能在主线程中对UI元素进行操作,如果在非UI线程直接对UI进行了操作,则会报错,另外,对于运算量较大的操作
和IO操作,我们需要新开线程来处理这些工作,以免阻塞UI线程,子线程与主线程之间是怎样进行通信的呢?此时就要采用消息
循环机制(Looper)与Handler进行处理
4)Activity与Service间通信
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到
Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,Intent中我们可以传递数据给Service,
而当我们Service执行某些操作之后想要更新UI线程,我们应该怎么做呢?答案是Activity中通过获取IBinder得到Service对象调取
Service接口,Service中可通过发广播sendBroadcast通知Activity
5)数据安全
数据安全包含数据库数据安全、SD卡数据(外部存储)安全、RAM数据(内部存储)安全,每种数据存储方式都有各自的存与
取的方法,存储系统不同的位置,读取也会被限制,相对于应用之间都是安全的,但是一旦拥有超出私有权限,如root,数据就
变的不安全了,因此,私密数据也要做到加密存储
6)本地库使用
Android系统的底层库由c/c++编写,上层Android应用程序通过Java虚拟机调用底层接口,衔接底层c/c++库与Java应用程序间的
接口正是JNI(JavaNative Interface)。应用开发中,也可以通过c/c++完成一些比Java更优或者Java无法实现的功能,然后引入
到应用中,比如变声的实现
7)设计模式
常用单例模式、代理模式、工厂模式、观察者模式、装饰模式、策略模式、状态模式
8)架构模型
MVC、MVP
3.工具篇
1)Http网络请求
网络连接是耗时的操作,通常我们不会将其放在UI线程操作,会编写异步线程,将其放在后台线程执行(异步线程操作),我们也
可以自己写一个满足需求的网络请求的辅助工具包,同时也可以选择网上提供的网络操框架,可以减少我们的工作量。其中有轻量
的android-async-http,谷歌官方的volley,Square提供的Retrofit,都是开源的,使用前都要分析一下它们的原理、优缺点,知其然
知其所以然,根据不同的需求选择不同的框架
2)数据生成/解析
Android 网络通信中常用数据格式类型有JSON和XML,所以这两种数据格式的生成和解析需要统一封装工具
a)JSON数据格式
常用的生成/解析工具有自动的Gson和手动的HashMap,其中HashMap的value可定义为不同类型的对象,甚至HashMap本身
或者ArrayList复杂对象
b)XML数据格式
常用的三种生成/解析方法有基于事件流的SAX解析和DOM是基于文档树结构的XML解析以及DOM4J,要对它们的优缺点和使
用场景了解清楚
3)图形图像
Android中图像剪切、旋转、压缩、圆角显示及本地存取等处理需要一个统一的封装工具,另外,图片的异步加载、缓存等功能辅
助模块,在网上可以找到一些比较优秀开源的图片异步加载工具包
4)数据存取
a)SharedPreferences
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置,它提供了Android平台常规的Long长
整形、Int整形、String字符串型的保存
b)File文件
文件可用来存放大量数据,如文本、图片、音视频等,具体的存取实现过程与在J2SE环境中保存数据到文件中是一样的
c)SQLite数据库
SQLite是轻量级嵌入式数据库引擎,它支持SQL语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都
可以使用它,在 Android应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android提供了
SQLiteOpenHelper帮助你创建一个数据库,你只要继承SQLiteOpenHelper类,就可以轻松的创建数据库。SQLiteOpenHelper
类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。另外,第三方提供了数据库加密工具,可根据业务情况使用
d)ContentProvider存储数据
ContentProvider提供了一种多应用间数据共享的方式,比如:联系人信息可以被多个应用程序访问
4)常用辅助类
日志辅助类、本地存储辅助类、SD卡相关辅助类、屏幕相关辅助类、App相关辅助类、网络相关辅助类、单位转换辅助类、日期时
间转换辅助类
5)第三方集成
a)地图
百度,高德
b)支付
微信,支付宝
c)分享
微信,QQ,新浪微博
d)推送
个推,百度,极光,腾讯
e)统计
百度,友盟
f)二维码
谷歌Zxing
g)登录
微信,QQ,新浪微博
h)短信
Mob移动开发者服务平台
6)签名/打包/部署/发布
4.其他
1)近场通信NFC
2)红外/蓝牙
3)语音识别
4)人脸识别
5)指纹识别
6.附摘
1)Android四大组件详解:http://blog.csdn.net/ican87/article/details/21874321
2)Android数据安全:http://blog.csdn.net/xyz_lmn/article/details/8806985
标签:android开发
原文地址:http://blog.csdn.net/xiaoxuanfeng1986/article/details/46923319