Android基础知识| 青训营笔记

154 阅读5分钟

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

一、本堂课重点内容

  1. 介绍了android的基础组件:Activity、Fragment、Service、Broadcast、ContentProvider、Intent
  2. 通信组件:Handler、Binderimage.png

二、详细知识点介绍

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官网的生命周期图。 image.png
    启动模式
  • 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官网的生命周期图。
    image.png

(2)Service

Service意为服务,是实现程序后台运行的解决方案。

基本用法

  • 创建一个类继承于Service,并在清单文件中注册。
  • 通过startService或bindService启动。

生命周期

如果通过startService启动,生命周期会经过onCreate -> onStartCommand -> onDestory。
如果通过bindService启动,生命周期会经过onCreate -> onBind -> onUnBind -> onDestory。
附上一张android官网的生命周期图。
image.png

(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的了解也不多,所以这里引用几张图片来简单介绍。
image.png

image.png

四、总结

本节课简单介绍了Android的基础知识:四大组件、Fragment(碎片)、Intent(意图)、两大通信组件(Handler、Binder)。
这些知识都是踏入android开发的基础知识,当然你要对语言(java或者kotlin)足够熟悉,基本上每一个App都离不开以上的知识。
当然,本文可能对零基础的同学并不友好,因为讲的太简要了,很多都是粗略的介绍,因为内容确实有点多,如果都细讲,那就太长了。可以根据本文的知识点,去对应的文章或者android零基础开发相关的书去阅读,去了解。

五、引用参考

本文章参考了【Android 客户端专场 学习资料一】, 主要引用了一些图片及文字。