四大组件|青训营笔记

139 阅读3分钟

四大组件|青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第1天

1.1界面组件

Activity

Activity是程序入口,也是布局容器 注册 布局 绑定

Activity的生命周期

打开页面:1-2-3 关闭页面:4-5-6 1 部分遮挡 2 遮挡恢复 1 页面全遮挡 234 遮挡恢复

配置改变

小结

Activity的启动模式

解决多个首页问题 :

问题:加入首页按钮后,点击会在当前页面加入首页,返回后首页会消失。

预期:点击首页按钮返回,上面的页面全部退出

解决:将首页launchmode设置为singleTask

Fragment

基本用法

  1. 创建Fragment布局文件
  2. 创建Fragment子类,加载布局文件
  3. Activity加载Fragment(静态加载,动态加载)

生命周期

与活动通信

在 activity 里也可以通过 findFragmentById()(对于在 activity 提供 fragment 布局的 或findFragmentByTag() (对于在 activity 提供或者不提供 fragment 布局的)方法获取 fragment 的实例,例如在 activity 中从 FragmentManager 获取对 Fragment 的引用来调用 fragment 中的方法: Fragment fragment = getFragmentManager.findFragmentById(R.id.fragment_container);

FragmentManager 还可以执行的操作包括:

  • 通过 findFragmentById 或 findFragmentByTag 获取 activity 中存在的 fragment 的实例

  • 通过 popBackStack (

    模拟用户点击返回按钮操作

    )将 fragment 从返回栈中弹出

  • 通过 addOnBackStackChangedListener() 注册一个监听返回栈改变的监听器

  • 像上边生成 fragmentTransaction 的方法,可以使用 fragmentManager 生成一个 fragmentTransaction 来执行某些事务,比如添加、替换、移除、addToBackStack()等。

小结

Service

基本用法

要创建服务,必须创建 Service 的子类(或者使用它的一个现有子类)。需要重写一些回调方法,回调方法包括:

  • onStartCommand() 当另一个组件(如 Activity )通过调用 startService() 请求启动服务时,系统将调用此方法。一旦执行此方法,服务会启动并可在后台无限期运行。如果你实现了此方法,在服务工作完成后,需要调用 stopSelf() 或 stopService() 来停止服务(如果只是提供绑定则无需实现此方法)

  • onBind()

当另一个组件调用 bindService() 与服务绑定时,系统将调用此方法。在此方法中必须返回 IBinder 提供一个接口,供客户端与服务器进行通信。如果不希望允许绑定,则可以返回 null

  • onCreate() 首次创建服务时,系统调用次方法来执行一次性程序(在调用 onStartCommand() 或 onBind() 之前)。如果服务已经运行则不会调用此方法。

  • onDestory() 当服务不再使用且将被销毁是,系统调用此方法。服务应该实现方法来清理所有资源,如线程、注册的监听器,接收器等

生命周期

image.png

广播

  • 标准广播:异步执行的广播,广播发出后,所有广播接收器几乎会同时接受这个信息,这种广播通讯效率最高,且无法截断
  • 有序广播:广播发出后只有一个接收器收讯,这个广播接收器中逻辑执行完后广播才会传递。接收器有先后顺序,优先级高的广播优先接收,且广播接收器可截断广播,是后面的接收器无法接受信息

ContentProvider内容提供器

基本用法

image.png

Intent

  1. 显式Intent setComponent/setCla指定具体类
  2. 阴式Intent Action 动作 Data 数据 Category 类别 Type 数据类型 Component 组件 Extra 扩展信息 Flag 标志位