这是我参与「第四届青训营 」笔记创作活动的第2天
课堂笔记
概述
- 基础组件
- Activity
- Fragment
- Service
- BroadcastReceiver
- ContentProvider
- 通信组件
- Handler
- Binder
1 Android基础组件
1.1 Activity
Activity是用于展示数据,实现与用户的交互的容器。
Activity 生命周期
Activity常见的四种生命周期状态如下:
-
- Active 运行状态
-
- Pause 暂停状态
-
- Stop 停止状态
-
- Killed 消亡状态
Activity 必须在 AndroidMainfest.xml 中注册
Activity 是四大组件之一, Android 规定四大组件必须在 AndroidMainfest.xml 中注册, Activity如果不注册,则会引起 App Crash 报错。
启动 Activity 的方法
显示启动
Intent intent = new Intent(ActivityMethods.this, OtherActivity.class)
startActivity(intent);
隐式启动
Intent intent = new Intent("string_action");
// intent.setAction("string_action");
startActivity(intent);
Activity 启动模式
- Standard 启动模式
- SingleTask 启动模式
- SingleTop 启动模式
- SingleInstance 启动模式
1.2 Fragment
基本用法
Fragment 表示 FragmentActivity 中的行为或界面的一部分。可以在一个 Activity 中组合多个片段,从而构建多窗格界面;也可以在多个 Activity 中重复使用某个片段。可以将 Fragment 视为 Activity 的模块化组成部分。
- 生成 Fragment
- 将 Fragment 添加到 Activity
- 在运行过程中操作 Fragment
生命周期
1.3 Service
Service组件可以在后台一直运行而不提供用户界面。可由其他组件创建或启动,即便用户切换到其他任务,Service仍然可以在后台一直运行。此外,组件可以绑定到 Service ,进行交互,甚至执行进程间通信(IPC)。
生命周期
1.4 Broadcast
Broadcast Receiver类型:
- 标准广播
- 有序广播 注册方式:
- 静态注册
- 动态注册 发送标准广播:
Intent intent=new Intent("android.intent.broadcasttest.MY_BROADCAST");
sendBroadcast(intent);
}
发送有序广播:
Intent intent = new Intent("android.intent.broadcasttest.MY_BROADCAST");
sendOrderedBroadcast(intent, null);
}
1.5 ContentProvider
ContentProvider 属于 Android 的四大组件之一,基于 Android 中的Binder 机制实现。主要应用于进程间数据传输。
- 1.创建一个DBHeler类继承自SQLiteOpenHelper。
- 2.创建MyProvider继承自ContentProvider
- 3.创建MyObserver继承自ContentObserver
- 4.最后在调用ContentProvider打印出DB数据库的数据
1.6 Intent
1 显式Intent
- setComponent / setClsaa 指定具体类
2 隐式Intent
- Action(动作)
- Data(数据)
- Category(类别)
- Type(数据类型)
- Component(组件)
- Extra(扩展信息)
- Flag(标志)
2 Android 通信组件
2.1 Handler
核心原理:
2.2 Binder
服务端
- 1 · 定义一个 AIDL 文件
- 2 · 实现描述的接口, 编Service
- 3 · 如果有实体类, 需要提供实体类(jar包形式) 客户端
- 1 · 拿到 AIDL 文件
- 2 · 绑定服务, 获得接口持有对象
核心原理:
2.3 通信组件总结
个人思考与总结
什么是程序?
开发者视角:
- What:代码+资源
- Why:改变世界
- How:知识+经验
用户视角:
- What:界面 互动 记忆
- Why:工具 视频 游戏
- How:应用商店 搜索引擎
Activity
What:
- 界面容器
Why:
- 前台交互
- 程序入口
- 布局容器
为什么使用Fragment
- 碎片化
- 速度快