这是我参与「第四届青训营 」笔记创作活动的的第2天
一、本堂课重点内容
- 介绍了android的基础组件:Activity、Fragment、Service、Broadcast、ContentProvider、Intent。
- 通信组件:Handler、Binder。
二、详细知识点介绍
1. 基础组件
- android的四大组件为Activity、Service、Broadcast、ContentProvider。这四个使用的话都需要在AndroidMainfest.xml(清单文件)中注册。
- 除此之外,还介绍了Fragment与Intent。
(1)界面组件
Activity
Activity是什么?
顾名思义,Activity为活动,它是一个界面容器。
为什么要有Activity
它用于前台与用户进行交互、作为程序的入口、视图布局的容器。
基本用法
- 创建一个类续承于Activity类,并在清单文件中声明。
- 绑定布局:创建一个布局文件,在我们创建的类中在onCreate()回调事件中调用setContentView方法进行绑定。
生命周期
onCreate: 创建时回调
onStart:已启动、界面不可见
onResume:界面可见
onPause:Actvity失去焦点或已暂停,Activity界面部分可见
onStop:界面不可见
onRestart:重启已停止的Activity
onDestory:activity销毁
附上一张android官网的生命周期图。
启动模式 - Standard(默认模式)
当启动一个Activity时,都会创建一个崭新的Activity实例位于任务栈顶。 - SingleTask
当启动 Activity时,如果任务栈内已经存在Activity的实例,会将Activity上方的实例全部出栈让其位于任务栈顶,并且Activity中的 onNewIntent() 方法会被调用 - SingleTop
当启动Activity时,如果栈顶已有实例,则复用,反之创建一个新。 - SingleInstance
当启动Activity时,会启动一个新的返回栈来管理。
实际应用:例如微信的视频通话、手机的通话。
Fragment
Fragment是什么
- Fragment意为碎片,是一种可以嵌入在活动当中的UI片段。
- 初衷是为了充分利用平板的屏幕空间,但现在也广泛地应用到开发中。
基本用法 - 创建布局文件及Fragment子类
- 在Activity中动态加载
生命周期
大多数与Activity一样,这里介绍几个比较特殊的。 - onAttach
在Fragment 和 Activity 建立关联是调用(Activity 传递到此方法内) - onCreateView
当Fragment 创建视图时调用 - onActivityCreated
在相关联的 Activity 的 onCreate() 方法已返回时调用。 - onDestroyView
当Fragment中的视图被移除时调用 - onDetach
当Fragment 和 Activity 取消关联时调用。
附上一张android官网的生命周期图。
(2)Service
Service意为服务,是实现程序后台运行的解决方案。
基本用法
- 创建一个类继承于Service,并在清单文件中注册。
- 通过startService或bindService启动。
生命周期
如果通过startService启动,生命周期会经过onCreate -> onStartCommand -> onDestory。
如果通过bindService启动,生命周期会经过onCreate -> onBind -> onUnBind -> onDestory。
附上一张android官网的生命周期图。
(3)Broadcast
Broadcast意为广播,主要负责事件的通知:开机、网络中断、短信通知。
基本用法
- 静态广播
创建一个广播类,在清单文件中注册。 - 动态广播
创建一个广播类,通过Context.registerReceiver()动态注册。 - 发送广播。
通过Context.sendBroadcast发送。
(4)ContentProvider
ContentProvider意为内容提供者,主要用于进程间通信。
基本用法
- 生产者
创建ContentProvider实现类,在清单文件中注册。 - 消费者
在清单文件中声明权限,通过context.getContentResolver()获取。
(5)Intent
Intent意为意图,指明当前组件想要执行的动作。
基本用法
- 显示Intent
通过setComponent、setClass指定具体类。 - 隐式Intent
通过Action指定动作,Category指定一些附加信息,通过Extra设置传递的数据等。
2. 通信组件
(1)Hander
Handler用于线程间的通信,它的执行是在主线程上。 基本用法:
- 创建Handler,重写handleMessage方法。
- 构造Message。
- 通过Handler.sendMessage发送消息。
核心原理:
Handler -> 负责发送消息、处理消息。
Message -> 用于封装消息
MessageQueue -> 消息队列
Looper -> “钩子”,循环地从消息队列中“钩”出消息,让Hanlder处理。
由于篇幅问题,这里就不具体介绍了。
(2)Binder
Binder用于进程间的通信。
基本用法:
- 服务端
定义AIDL文件
实现描述的接口,编写Service
如果有实体类,需要提供实体类 - 客户端
拿到AIDL文件
绑定服务,获得接口持有对象
核心原理:
Binder是一个比较难的内容,它的原理的介绍的篇幅也是挺长的,我对Binder的了解也不多,所以这里引用几张图片来简单介绍。
四、总结
本节课简单介绍了Android的基础知识:四大组件、Fragment(碎片)、Intent(意图)、两大通信组件(Handler、Binder)。
这些知识都是踏入android开发的基础知识,当然你要对语言(java或者kotlin)足够熟悉,基本上每一个App都离不开以上的知识。
当然,本文可能对零基础的同学并不友好,因为讲的太简要了,很多都是粗略的介绍,因为内容确实有点多,如果都细讲,那就太长了。可以根据本文的知识点,去对应的文章或者android零基础开发相关的书去阅读,去了解。
五、引用参考
本文章参考了【Android 客户端专场 学习资料一】, 主要引用了一些图片及文字。