Android应用解析

Activity :

活动是最基本的Android 应用程序组件,应用程序中,一个活动一般就是一个单独的屏幕。每个活动都被实现为一个独立的类,而且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件作出响应。大多数的应用是由多个屏幕显示组成。例如:一个文本信息的应用也许有一个显示发送消息的联系人列表屏幕,第二个屏幕用来写文本消息和选择收件人,再来一个屏幕查看消息历史或者消息设置操做等。这里每个这样的屏幕就是一个活动,很容易实现从一个屏幕到一个新的屏幕而且完成新的活动。在某些状况下当前的屏幕也许须要向上一个屏幕活动提供返回值--好比让用户从手机中挑选一张照片返回通信录作为电话拨入者的头像。

当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户能够返回到历史堆栈中的前一个屏幕。当屏幕再也不使用时,还能够从历史堆栈中删除。默认状况下,Android 将会保留从主屏幕到每个应用的运行屏幕。

简单理解Activity 表明一个用户所能看到的屏幕,Activity 主要是处理一个应用的总体性工做,例如,监听系统事件(按键事件、触摸屏事件等)、为用户显示指定的View,启动其余Activity 等。全部应用的Activity都继承android.app.Activity 类,该类是Android 提供的基层类,其余的Activity 继承该父类后,经过Override
父类的方法来实现各类功能,这种设计在其余领域也较为常见。

Intent :


调用Android 专有类Intent 进行架构屏幕之间的切换。Intent 是描述应用想要作什么。Intent 数据结构两个最重要的部分是动做和动做对应的数据。典型的动做类型有:MAIN(活动的门户)、VIEW、PICK、EDIT等。而动做对应的数据则以URI 的形式进行表示。例如:要查看某我的的联系方式,你须要建立一个动做类
型为VIEW 的Intent,以及一个表示这我的的URI。

Android 使用了Intent 这个特殊类,实如今屏幕与屏幕之间移动。Intent 类用于描述一个应用将会作什么事。在Intent 的描述结构中,有两个最重要的部分:动做和动做对应的数据。典型的动做类型有:M AIN(activity的门户)、VIEW、PICK、EDIT 等。而动做对应的数据则以URI 的形式进行表示。例如:要查看一我的的联系方式,你须要建立一个动做类型为VIEW 的intent,以及一个表示这我的的URI。

与之有关系的一个类叫IntentFilter。相对于intent 是一个有效的作某事的请求,一个intentfilter 则用于描述一个activity(或者IntentReceiver)可以操做哪些intent。一个activity 若是要显示一我的的联系方式时,须要声明一个IntentFilter,这个IntentFilter 要知道怎么去处理VIEW 动做和表示一我的的URI。IntentFilter 须要在AndroidManifest.xml 中定义。

经过解析各类intent,从一个屏幕导航到另外一个屏幕是很简单的。当向前导航时,activity 将会调用startActivity(IntentmyIntent)方法。而后,系统会在全部安装的应用程序中定义的IntentFilter 中查找,找到最匹配myIntent 的Intent 对应的activity。新的activity 接收到myIntent 的通知后,开始运行。当startActivity 方法被调用将触发解析myIntent 的动做,这个机制提供了两个关键好处:
A、Activities 可以重复利用从其它组件中以Intent 的形式产生的一个请求;
B、Activities 能够在任什么时候候被一个具备相同IntentFilter 的新的Activity 取代。

IntentReceiver:


当你但愿你的应用可以对一个外部的事件(如当电话呼入时,或者数据网络可用时,或者到了晚上时)作出响应,你可使用一个IntentReceiver。虽IntentReceiver 在感兴趣的事件发生时,会使用NotificationManager通知用户,但它并不能生成一个UI。IntentReceiver 在AndroidManifest.xml 中注册,但也能够在代码中使用Context.registerReceiver()进行注册。当一个intentreceiver 被触时,你的应用没必要对请求调用intentreceiver,系统会在须要的时候启动你的应用。各类应用还能够经过使用Context.broadcastIntent()将它们本身的
intentreceiver 广播给其它应用程序。

Service :


一个Service 是一段长生命周期的,没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用者能够选择歌曲并播放歌曲。然而,音乐重放这个功能并无对应的activity,由于使用者固然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity 会使Context.startService()来启动一个service,从而能够在后台保持音乐的播放。同时,系统也将保持这个service 一直执行,直到这个service 运行结束。另外,咱们还能够经过使用Context.bindService()方法,链接到一个service 上(若是这个service 尚未运行将启动它)。当链接到一个service 以后,咱们还能够service 提供的接口与它进行通信。拿媒体播放器这个例子来讲,咱们还能够进行暂停、重播等操做。

Content Provider : Android 应用程序可以将它们的数据保存到文件、SQLite 数据库中,甚至是任何有效的设备中。当你想将你的应用数据与其它的应用共享时,内容提供器就能够发挥做用了。由于内容提供器类实现了一组标准的方法,从而可以让其它的应用保存或读取此内容提供器处理的各类数据类型。 数据是应用的核心。在Android 中,默认使用鼎鼎大名的SQLite 做为系统DB。可是在Android 中,使用方法有点小小的不同。在Android 中每个应用都运行在各自的进程中,当你的应用须要访问其余应用的数据时,也就须要数据在不一样的虚拟机之间传递,这样的状况操做起来可能有些困难(正常状况下,你不能读取其余的应用的db 文件),ContentProvider 正是用来解决在不一样的应用包之间共享数据的工具。 - 全部被一个Android 应用程序建立的偏好设置,文件和数据库都是私有的。 - 为了和其余应用程序共享数据,应用程序不得不建立一个Content Provider - 要回索其余应用程序的数据,它本身的Content Provider 必须被调用 - Android 本地Content Provider 包括:        CallLog:地址和接收到的电话信息        Contact.People.Phones:存储电话号码        Setting.System:系统设置和偏好设置        等等
相关文章
相关标签/搜索