四大组件是什么与它们的生命周期(及Fragment)

首先当我们一开始学习安卓的时候想必就是四大组件了以及它们的生命周期,现在就来复习回想下。

四大组件有:Activity, ContentProvider, BroadcastReceiver, Service

Activity

提供与用户交互的界面或者可以说是一个窗口

下面我是从官方文档中关于Activity生命周期 的一张图

lifetcycle.jpg

正常启动时: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

服务,有前台服务和后台服务,一般提供需在后台长期运行的服务,例如:音乐播放器等

它的生命周期如下图:

lifetcycle.jpg

因为启动服务的方法有两个:startService() 和 bindService() 两者的生命周期略有不同。

  • 首先来看:startService() 方式
    启动:onCreate() -> onStartCommand() 调用stopServcie() 停止服务,随后执行 onDestroy()

  • 其次是:bindService() 方式
    启动:onCreate() -> onBind() 服务启动起来了,调用unbindService() 停止服务,随后执行 onUnbind() -> onDestroy()

Broadcastreceiver

广播,可以接受来自应用内或者应用外的广播,分为两个角色:广播发送者,广播接收者

  • 广播的注册方式有两种:一种是代码注册,一种是清单文件注册,代码注册的优先级要比清单文件注册的优先级要高;
  • 广播的发送可以是有序广播也可以是无序广播,有序广播接收到广播的顺序按照优先级的顺序;
  • 注意广播接收器onReceive() 方法运行在 UI 线程中,不可以做耗时操作,否则会导致ANR异常;

ContentProvider

内容提供者,应用内数据共享

Fragment

一般和 viewpager 配合使用,不能单独使用,要配合Activity使用,但是有自己的生命周期

fragment

一般在onAttach()中获取参数值一些,onCreateView()中创建布局,布局加载完成后在onActivityCreated()中执行一些初始化操作,随后onStart(),onResume().onPause(),onStop(), fragment 销毁,onDestroyView() -> onDestroy() ->onDetach()

-------------本文结束感谢您的阅读-------------