学习笔记之Android四大核心组件详解

概述

Android四大核心组件指的是Activity,Service,ContentProvider,BroadCastReceiver,核心组件都是由Android系统进行管理和维护的,一般都要在清单文件中进行注册或者在代码中动态注册。

Activity

  1. 定义与作用: Activity的中文意思是活动,代表手机屏幕的一屏,或是平板电脑中的一个窗口,提供了和用户交互的可视化界面。Activity是用于处理UI相关业务的,比如加载界面、监听用户操作事件。
  2. 生命周期: 生命周期指的是Activity从创建到销毁所执行的一系列方法,主要包括7个生命周期方法。详细流程如下图
    这里写图片描述

    里面涉及了Activity的四个重要状态,如下表
    这里写图片描述
    注:以上两个图表皆摘自《Android从入门到精通》。

  3. 创建与配置 创建一个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>

4 . 启动模式
Activity的启动模式决定了激活Activity时,是否创建新的对象,进而将影响到任务栈也叫回退栈。
在AndroidManifest.xml文件中,可以为每个activity节点配置android:launchMode属性,以决定该Activity的启动模式,该属性的值有:
—–standard:(默认值)标准模式:每次激活Activity时,都会创建新的Activity对象
—–singleTop:栈顶时唯一,即当Activity处于栈顶位置时,每次激活并不会创建新的Activity对象。但不在栈顶时,每次激活时会创建新的对象。
—–singleTask:任务栈中唯一,即当栈中没有该Activity时,将创建该Activity对象,当栈中已经有该Activity时,将不会创建新的对象,原本栈中位于该Activity之上的其它Activity将全部被强制出栈,且被激活的Activity将自动获得栈顶位置。
—–singleInstance:实例(对象)唯一,确保该Activity的对象一定只有1个,被设置为singleInstance的Activity将被置于一个专门的任务栈中,且该任务栈中有且仅有一个Activity。
什么是任务栈(回退栈):
任务栈是用来存放所有激活了的Activity对象,激活的Acitvity将会按照后进先出的栈结构显示出来。因为屏幕只能显示一个Activity,当有新的Activity被激活时,原来正在显示的Activity就会进行压栈操作被压到新Activity对象下方的位置。当按下”Back”键时栈顶Activity会执行弹栈操作,而在第2位的Activity将获得栈顶位置,显示在前台。

service

  1. 定义与作用
    — Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行,以上是Google文档的解释,资料来源于大神博客
    — Service还有一个作用就是提升进程(每个应用都是一个进程)的优先级,进程的优先级指的是在Android系统中,会把正在运行的应用确定一个优先级,当内存空间不足时,系统会根据进程的优先级清理掉一部分进程占用的内存空间,以获得足够的内存空间以供新启用的应用运行。详细的进程优先级划分如下,
    1)前台进程:应用程序存在Activity正位于前台,可见并可控
    2)可见进程:应用程序存在Activity处于局部可见状态,即局部可见却不可控
    3)服务进程:应用程序存在正在运行的Service
    4)后台进程:应用程序的所有Activity均被置于后台,没有任何Activity可见
    5) 空进程:已经退出的应用程序
    service的进程优先级详细介绍请参考这篇博文,点此进入

2 . 状态
1)启动
【启动service】
用Context类定义的startService(Intent)即可启动Service组件,其中intent定义方法与跳转Activity类似,只需把Actvity类换成Service类即可。其生命周期为启动时onCreate()–>onStartCommand()–>销毁时onDestroy(), 反复调用startService()只会导致Service反复执行onStartCommand()
【停止service】
调用Context类定义的stopService(Intent)即可停止Service组件,反复调用并没有任何效果,亦不会报告错误,即:即使停止没有启动的Service也不会出错。也可以在Service类的内部,调用Service定义的stopSelf()方法,停止当前Service。

2)绑定
主要作用是实现组件间的通信,实质的表现是Activity可以调用Service中的方法,使Service执行特定的业务,并且这些方法可以是带返回值的方法,进而Activity可以通过获取这些

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值