Activity 是什么
activity是 Android 组件 中最基本也是最为常见用的 四大组件 之一。Android 四大组件有 Activity,Service 服务,ContentProvider 内容提供,BroadcastReceiver 广播接收器。
Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。
Activity中所有操作都与用户密切相关,是一个负责与 用户交互 的组件,可以通过 setContentView(View) 来显示指定控件。
在一个android应用中,一个 Activity 通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。
Activity 的创建
分为三部
1 创建 Activity
2 在 manifest 中注册 activity
3 关联布局
Activity 之间的跳转
Intent 类
注意: 需要在 manifest 中注册 activity (一般都是自动注册的)。
Activity 4 种启动模式
Activity 存放 在 栈中, Activity 之间的跳转 就像 出栈 和 入栈 一样,这是 系统默认的 启动模式;
4 种启动模式
1 standard
2 singleTop
顶部复用模式
3 singleTask
4 singleInstance
如何设置模式
1 manifest 中设置
2 在代码中设置
Activity 的生命周期
类比 Vue 、React 的生命周期
Activity 之间数据的传递
页面跳转传参
可以传递 多种数据结构
注意 当传递 序列化的数据,该类需要 implements Serializable
第二个页面 接受参数
在 onCreate 生命周期 中
当我们需要回传数据的时候
关闭页面将数据回传到原来的页面
步骤
1 第一个页面 使用 startActivityForResult
2 第二个页面 使用 setResult 返回数据
可以选择 关闭页面的 生命周期 或者 退后按钮事件中 返回数据
3 第一个页面 onActivityResult 监听结果返回的 事件
Fragment
设计思想
做不同屏幕的适配, 模块化可复用,就跟 React 和 Vue 的组件类似;
Fragment 和 Activity 的区别
1 Fragment 是到 Android 3.0+ 以后才出现;
2 一个 Activity 可以运行多个 Fragment;
3 Fragment 不能脱离 Activity 而存在;
4 Activity 是屏幕的主题,而 Fragment 是 Activity 的一个组成元素;
使用方式
静态加载: XML
步骤
1 编写 fragment 的 布局;
2 编写 fragment 类
3 在主 Activity 中应用 fragment
注意 name 是 fragment 的 全路径
动态加载: Java code
步骤 1
同静态加载 还是要先把 fragment 的类 和 布局写好
步骤 2
需要加载 fragment 的 Activity 的布局文件 需要 写好 占位的 控件;
Fragment 传值
类比 Vue 和 React 的 父子组件传值;
Activity -----> Fragment 传值
使用 setArguments 方法
类比 React 的 state, 首先 声明 state, 然后父组件中 传入参数, 这样 子组件就能拿到参数并使用, 注意 在不同的生命周期中获取;
Fragment -----> Activity 传值
使用 Callback
通过 将 主 Activity 的 this 传入, 并且 主 Activity 实现了 onClick 方法
mOnTitleClickListener 就是 this,直接 调用了 Activity 的 onclick 方法,拿到了 fragment 的传递的参数 title;