码迷,mamicode.com
首页 > 移动开发 > 详细

Android应用知识架构清单

时间:2015-08-03 16:59:15      阅读:191      评论:0      收藏:0      [点我收藏+]

标签: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应用知识架构清单

标签:android开发

原文地址:http://blog.csdn.net/xiaoxuanfeng1986/article/details/46923319

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!