Android 四大组件

Android 四大组件

一、Activity —–给用户的展示页面
二、Service ——服务
三、Broadcast Receiver ——-广播接收器
四、Content Provider ——-内容提供者

除了BroadcastReceiver以外,其他三个组件都必须在AndroidManifest中注册,对于BroadcastReceiver来说它既可以在AndroidManifest中注册也可以通过代码来进行注册。
在调用方式上Activity、Service和BroadcastReceiver都需要借助Intent,而ContentProvider则无需借助Intent。

Activity

生命周期

这里写图片描述

方法解析

方法类型描述
onCreate实例化当Activity第一次启动的时候,触发该方法,完成初始化
onStart启动该方法的触发表示所属Activity将被展现给用户
onResume交互当一个Activity和用户发生交互的时候,触发该方法
onPause挂起当一个正在前台运行的Activity因为其他的Activity需要前台运行而转入后台运行的时候,触发该方法
onStop停止一个活动不再需要展示给用户的时候,触发该方法。如果系统内存紧张,则会直接结束这个Activity,而不会触发 onStop 方法。所以如果有要保存的数据时,应该在onPause时做,可以认为onPause方法或许是活动触发的最后的方法,之后就无法主观控制了
onRestart重启当处于停止状态的Activity需要再次展现给用户的时候,触发该方法
onDestroy销毁当Activity销毁的时候,触发该方法。和 onStop 方法一样,如果内存紧张,系统会直接结束这个Activity而不会触发该方法

标题栏透明的时候onStop方法内不能回收资源

Service

生命周期

这里写图片描述

使用context.startService() 启动Service

其生命周期为context.startService() ->onCreate()- >onStart()->Service running–>(如果调用context.stopService() )->onDestroy() ->Service shut down
如果Service还没有运行,则android先调用onCreate()然后调用onStart();
如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。
不管onstart()被调用多少次都不会重新创建service,这种service可以无限地运行下去,必须且只需要一次调用stopSelf()方法或者其他组件调用stopService()方法来停止它。
当service被停止时,系统会销毁它。

对于bindService()启动Service会经历:

context.bindService()->onCreate()->onBind()->Service running–>onUnbind() -> onDestroy() ->Service stop
onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind->onDestroy相应退出。
所以调用bindService的生命周期为:onCreate –> onBind(只一次,不可多次绑定) –> onUnbind –> onDestory。一但销毁activity它就结束,如果按home把它放到后台,那他就不退出。

在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

方法解析

方法/常量类型描述
START_CONTINUATION_MASK常量继续执行Service
START_STICKY常量用于显式的启动和停止Service
onBind(Intent intent)普通设置Activity和Service之间的绑定
onCreate()普通当一个Service创建时调用
onStartCommand(Intent intent, int flags, int startId)普通启动Service,由startService()方法触发
onDestroy()普通Service销毁时调用,由stopService()方法触发

Service的分类

类别区别应用
本地服务(Local)服务依附在主进程上音乐播放器
远程服务(Remote)服务是独立的进程一些提供系统服务的Service,这种Service是常驻的。

Service使用方式:

类别特点
通过startService 启动的Service后台处理工作,不进行通信,停止服务使用stopService
通过bindService来启动的Service该方法启动的服务要进行通信。停止服务使用unbindService
使用AIDL方式的Service进行跨进程的通信

Broadcast Receiver

  1. BroadcastReceiver是Android系统的四大组件之一,它本质上就是一个全局的监听器,用于监听系统全局的广播消息。由于BroadcastReceiver是一种全局的监听器,因此它可以方便地实现系统中不同组件之间的通信。
  2. BroadcastReceiver和事件处理机制相似,只不过事件处理机制是程序级别的的监听器,这些监听器运行在指定程序所在的进程中,当程序退出时,这些程序级别的监听器也会随之关闭。而BroadcastReceiver属于系统级别的监听器,它拥有自己的进程,只要系统中存在着与之匹配的Intent被广播出来, BroadcastReceiver总会被激发。
  3. 程序通过调用Context的sendBroadcast()方法来启动指定的BroadcastReceiver
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值