网站建设专,搜索引擎中注册网站,枣强网址建站,做个网站多少钱 百度能查到的Android 应用框架
Android 应用组件
对Android应用程序而言#xff0c;应用组件主要由Activity、Service、Broadcast Receivers、Intent、Content Providers、AndroidManifest等构成。
Activity是与用户直接交互UI组件#xff1b; Service是运行在后台、用户不可见的服务组…Android 应用框架
Android 应用组件
对Android应用程序而言应用组件主要由Activity、Service、Broadcast Receivers、Intent、Content Providers、AndroidManifest等构成。
Activity是与用户直接交互UI组件 Service是运行在后台、用户不可见的服务组件Broadcast Receivers是进行系统消息广播的广播组件Intent是应用组件间、进程间进行通信的通信组件Content Providers是不同应用间传递、分享数据的内容组件Android Manifest为应用程序的管理组件。
其他组件还有App Widgets、Graphics、Audio and Video、Data Storage、Resources等
Activity
在通常情况下Activity作为一个全屏的窗口出现也可以作为浮动窗口或者其他Activity的子Activity出现。
在Android中Activity的管理是通过Activity栈的方式来进行的在Activity的生命周期中存在4种状态激活active、运行running、停止stopped、暂停paused。
主要的Activity属性包括taskAffinity 、launchMode 、allowTaskReparenting 、clearTaskOnLaunch 、alwaysRetainTaskState finishOnTaskLaunce等。 Services
服务Services组件通常运行在后台对用户而言不具有可视性守护进程和硬件服务、原生服务等多是服务组件。 AIDL 接口
服务根据驻留的对象不同可以分为本地服务Local Services和远程服务Romate Services
一般将远程服务分为应用级远程服务和系统级远程服务两种
系统级的服务实现颇为复杂。除了定义服务本身外还需要定义被上层应用调用的接口。一般通过AIDL调用。而应用级远程服务除了AIDL外Android还提供了较为简单的Message方式的调用。但如果实现的服务希望被其他应用调用则必须通过AIDL进行。 Broadcast Receivers
广播接收器Broadcast Receivers是用来接收或者响应广播、通告的一个应用组件它与通知管理器密切相关。当时区发生改变、电量不足、工作语言发生改变等事件发生时注册相应广播接收器的应用将会收到这些信息。
广播分为两种类型标准广播Normal broadcasts、顺序广播Ordered broadcasts
标准广播指广播是完全异步的所有的接收器处于无序的运行状态。这类广播通过Context.sendBroadcast()方法发送。
顺序广播则按照一定的优先级进行广播高优先级的接收器向低优先级的接收器转播广播 Intent
在Android中应用组件也是通过Intent来激活的其中内容提供器是通过ContentResolver发出请求的方式来激活的而Activity、服务和广播接收器则是通过所谓的Intent异步消息的方式来激活的。
利用Intent激活组件的操作方法有startActivity(Intent)、startService(Intent)、bindService(Intent, ServiceConnection, int)、sendBroadcast(Intent)等其中startActivity()方法用于发起ActivitystartService()方法用于发起服务bindService()方法用于绑定服务而sendBroadcast()方法则用来向所有关联的广播接收器发送广播。
在通信过程中Intent负责对通信消息进行描述Android则根据Intent的描述找到匹配的组件将Intent传递给匹配的组件并完成组件的调用。
Intent在通信过程中起着媒介的作用专门传递组件互相调用的相关信息实现了调用者与被调用者之间的解耦
在Android中Intent携带的信息主要有两种属性行为Action和数据Data。其他属性还有类别Category、数据类型Type、组件Component、附加信息extras等。 Content Providers
内容提供器Content Providers是Android提供的一个在不同应用间传递、分享数据的机制这些数据可以存储在文件系统、SQLite数据库等中。 Android Manifest
在Android启动应用之前它必须了解应用组件的情况在Android中应用运行涉及的多数应用组件都必须在AndroidManifest.xml中声明
对于Activity对应的元素为“activity”对于服务对应的元素为“service”对于广播接收器对应的元素为“receiver”对于内容提供器对应的元素为“provider”
对于系统定义的Action默认的前缀为android.intent.action
常用的Action有android.intent.action.MAIN、android.intent.action.WEB_SEARCH。
对于开发者自定义的Action建议以所在包的包名作为前缀以保证命名的唯一性
如com.miaozl.helloworld.TRANSMOGRIFY。 Activity 和Tasks
作为和用户之间直接交互的UI组件Activity执行的是一个窗口的功能Tasks则是Activity的堆栈 进程和线程
在默认情况下每个应用均运行在其独自拥有的Linux进程中而每个进程拥有一个唯一的Java虚拟机Dalvik和一个唯一的Linux用户ID。 组件生命周期 Activity生命周期
在系统中Activity由Activity栈即Tasks来管理Activity在其整个生命周期中有4个状态运行running、暂停paused、停止stopped、销毁Destroyed
1.当一个Activity被置于前台时该Activity处于“running”状态
2.当一个Activity失去焦点但仍然可视时该Activity处于“paused”状态
3.当一个Activity完全不可视时该Activity处于“stopped”状态
4.当一个Activity因为某种原因被销毁时该Activity将处于“Destroyed”状态 Services生命周期
服务通常作为后台进程运行通过Context.startService()方法可以启动服务如果需要销毁一个服务则可以调用Context.stopService()、Service.stopSelf()、Service.stopSelfResult()等方法。
当客户端需要和服务进行绑定来利用服务时需要调用Context.bindService()方法结束绑定需要调用Context.unbindService()方法 Broadcast Receivers生命周期
Broadcast Receivers
void onReceive(Context curContext, Intent broadcastMsg)
当一个广播消息到达时Android会调用BroadcastReceiver ::onReceive()方法来处理消息在处理过程中广播接收器处于激活状态当处理结束时广播接收器处于去活状态
注册一个广播接收器的方法为Context::registerReceiver(BroadcastReceiver,IntentFilter) 进程生命周期
在Android中根据进程中运行的组件以及组件的状态将进程分为5类
前台进程foreground process、可视进程visible process、服务进程service process、后台进程background process、空进程empty process
1前台进程当一个进程出现如下场景时该进程被称为前台进程。场景包括正在运行一个与用户交互的Activity。驻留了一个与用户交互的Activity相绑定的服务。拥有一个正在执行生命周期调用onCreate()onStart()、onDestroy()的服务对象
2可视进程当一个进程没有包含任何前台组件但对用户视觉有影响时该进程被称为可视进程。这类进程的典型场景包括弹出窗口隐藏的全屏窗口等。另外驻留了与处于“paused”状态的Activity绑定的服务进程也属于这类进程
3服务进程当进程中驻留了一个服务组件时该进程称为服务进程除非系统已经没有足够的内存去运行前台进程和可视进程否则服务进程将一直在系统中保持运行。这类进程的典型场景如Mp3的后台播放
4后台进程当进程的所有Activity对用户而言均不可见时对用户体验来说没有直接的影响这些进程称为后台进程。为了满足更重要的进程的资源需求后台进程可能会被系统杀死
5空进程当一个进程没有驻留任何激活的应用组件时该进程称为空进程这类进程仍存在于系统中的原因是作为缓冲可以提高进程的下次启动时间。但为了保证系统的正常运行当系统资源濒临不足时Android常会选择杀死这类进程 启动过程
Android系统启动流程详细图解