首先当我们一开始学习安卓的时候想必就是四大组件了以及它们的生命周期,现在就来复习回想下。
四大组件有:Activity
, ContentProvider
, BroadcastReceiver
, Service
Activity
提供与用户交互的界面或者可以说是一个窗口
下面我是从官方文档中关于Activity生命周期
的一张图
正常启动时:onCreate()
-> onStart()
-> onResume()
而后我们看到当
Another activity comes into the foreground
执行onPause()
方法
当按home
键的时候: 当前Activity
已经不可见了,所以执行:onPause() -> onStop()
当重新回到
app
时,分为两种情况就是:①是app还在后台,执行:onRestart() -> onStart() -> onResume()
; ②是app被系统杀死了,则执行:onCreate() -> onStart() > onResume()
当在
app
里 从A -> B
此时A隐藏,B显示
,当重新返回A
时,执行:onPause() -> onResume()
,这种应用场景一般是比如需要返回做刷新操作的,可以将刷新方法写在onResume()
方法中执行。最后当退出应用程序的时候执行
onDestroy()
Service
服务,有前台服务和后台服务,一般提供需在后台长期运行的服务,例如:音乐播放器等
它的生命周期如下图:
因为启动服务的方法有两个:startService() 和 bindService()
两者的生命周期略有不同。
首先来看:
startService()
方式
启动:onCreate() -> onStartCommand()
调用stopServcie()
停止服务,随后执行onDestroy()
其次是:
bindService()
方式
启动:onCreate() -> onBind()
服务启动起来了,调用unbindService()
停止服务,随后执行onUnbind() -> onDestroy()
Broadcastreceiver
广播,可以接受来自应用内或者应用外的广播,分为两个角色:广播发送者,广播接收者
- 广播的注册方式有两种:一种是代码注册,一种是清单文件注册,代码注册的优先级要比清单文件注册的优先级要高;
- 广播的发送可以是有序广播也可以是无序广播,有序广播接收到广播的顺序按照优先级的顺序;
- 注意广播接收器
onReceive()
方法运行在UI
线程中,不可以做耗时操作,否则会导致ANR
异常;
ContentProvider
内容提供者,应用内数据共享
Fragment
一般和
viewpager
配合使用,不能单独使用,要配合Activity
使用,但是有自己的生命周期
一般在onAttach()
中获取参数值一些,onCreateView()
中创建布局,布局加载完成后在onActivityCreated()
中执行一些初始化操作,随后onStart(),onResume().onPause(),onStop(),
fragment 销毁,onDestroyView() -> onDestroy() ->onDetach()