投稿 资料上传 搜索
您现在的位置是: 首页 > 文章 > 正文

Android四大核心组件简介

前言

Android是一个移动设备的开发平台,其软件层次结构包含有操作系统 (OS)、中间件 (MiddleWare) 和应用程序 (Application)。根据完成的功能不同,Android 划分了 4 类核心组件,即 Activity、Service、BroadcastReceiver 和 ContentProvider,各组件之间通过 Intent 来传递消息。  

Activity  

Activity 是 Android 应用程序核心组件中最基本的一种,Activity是用于处理UI相关业务的,比如加载界面、监听用户操作事件。是用户和应用程序交互的窗口。 

在 Android 应用程序中,一个 Activity 通常对应一个单独的视图。一个 Android 应用程序是由一个或多个 Activity 组成的,这些 Activity 相当于 Web 应用程序中的网页,用于显示信息,并且相互之间可以进行跳转。和网页跳转不同的是,Activity 之间的跳转可以有返回值。 

Activity 是由 Android 系统进行维护的,它有自己的生命周期,即“产生、运行、销毁”,但是在这个过程中会调用许多方法,主要包括7个生命周期方法,创建 onCreate()、激活 onStart()、恢复 onResume()、暂停 onPause()、停止 onStop()、销毁 onDestroy()和重启 onRestart() 等。详细流程如下图:

 这里写图片描述

创建一个Activity需继承自android.app.Activity这个类,重写onCreate(),在onCreate()里面调用setContentView(参数)来加载布局,参数就是布局文件。配置则需要在清单文件的Application节点下面注册Actvitiy,如果要首先启动该Activity则添加带有category节点且值为LAUNCHER的intent-filter节点,清单文件的配置如下。

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

Service

Service 是一种类似于 Activity 但是没有视图的程序,它没有用户界面,可以在后台运行很长时间,相当于操作系统中的一个服务,简单个人理解为他保持程序在后台运行。

Service还有一个作用就是提升进程(每一个应用就是一个进程)的优先级,进程的优先级指的是在Android系统中,会把正在运行的应用确定一个优先级,当内存空间不足时,系统会根据进程的优先级清理掉一部分进程占用的内存空间,以获得足够的内存空间以供新启用的应用运行。

Android 中 Service有两种定义,即本地 Service 和远程 Service。本地 Service 是只能由承载该 Service 的应用程序访问的组件,而远程 Service 是供在设备上运行的其他应用程序远程访问的 Service。  

通过 Context.startService(Intent service) 可以启动一个 Service,其中intent定义方法与跳转Activity类似,只需把Actvity类换成Service类即可。其生命周期为启动时onCreate()–>onStartCommand()–>销毁时onDestroy(), 反复调用startService()只会导致Service反复执行onStartCommand()。

通过 Context. bindService() 可以绑定一个 Service。调用bindService()方法可以实现Activity与Service的绑定,调用unbindService()可以解除绑定。在Activity被销毁之前,必须解除与Service的绑定。生命周期为onCreate() -> 当第1次绑定时执行– onBind() -> 当第1次绑定时执行– onDestroy() -> 当解除绑定时执行。

下图为两种状态的Service生命周期说明:

 两种状态区别

BroadcastReceiver

BroadcastReceiver 的意思是“广播接收者”,顾名思义,它用来接收来自系统和其他应用程序的广播,并做出回应。所以ContentProvider可以将应用程序自身的数据对外(对其它应用程序)共享,使得其它应用可以对自身的数据进行增、删、改、查操作。

在 Android 系统中,当有特定事件发生时就会产生相应的广播。广播体现在方方面面。举例说,当开机过程完成后,系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时,系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作;当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度等。  

BroadcastReceiver 的 2 种注册方式:

  • 在 AndroidManifest. xml 中进行静态注册;
  • 在运行时的代码中使用 Context.registerReceiver() 进行动态注册。

只要注册了 BroadcastReceiver,即使对应的事件广播来临时应用程序并未启动,系统也会自动启动该应用程序对事件进行处理。另外,用户还可以通过 Context.sendBroadcast() 将自己的 Intent 对象广播给其他的应用程序。  

ContentProvider

广播接收器,顾名思义这是用于接收应用发送的广播的系统组件。文件、数据库等数据在 Android 系统内是私有的,仅允许被特定应用程序直接使用。在两个程序之间,数据的交换或共享由 ContentProvider 实现。广播是一种1对多的通信方式,即存在1个发送方,若干个接收方。  

ContentProvider 类实现了一组标准方法的接口,从而能够让其他的应用保存或读取 ContentProvider 提供的各种数据类型。  

Intent

Intent 并不是 Android 应用程序四大核心组件之一,但是其重要性无可替代。Android 应用程序核心组件中的三大核心组件 —— Activity、Service、BroadcastReceiver。通过消息机制被启动激活,而所使用的消息就是 Intent。Intent 是对即将要进行的操作的抽象描述,承担了 Android 应用程序三大核心组件相互之间的通信功能,所以是十分重要的。  


转载于:

文章标签:
阿里云服务器采购季
给作者打赏,鼓励TA抓紧创作!
评论