android基础知识|青训营笔记

110 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第1天。今天学习的内容是android客户端开发的基础知识。

对程序的认知

对程序有what,why,how三个问题。在开发的视角,程序是资源和代码的组成,开发程序为的是改变世界创造价值,开发程序的方式是依靠自己的知识和经验。在用户的角度,程序则是满足用户的需求。

android基础组建

界面组件

activity

activity是界面容器,负责前台交互;程序入口;布局容器的功能

基本用法:在AndroidManifest文件中注册,然后写一个布局文件,然后在activity中绑定布局文件。

activity的生命周期

onCreate(::创建时回调创建视图和绑定数据

onStart():即将进入前台

onResume():可以交互,位于activity栈顶

onPause():失去焦点

onStop():不可见

onRestart():重启activity

onDestory():销毁释放资源

onSaveInstanceState():非正常关闭时回调保存数据

onRestoreInstanceState():数据恢复

常见情况生命周期流程:

打开:create,start,resume

关闭:pause,stop,destory

部分遮挡:pause,恢复后resume

全遮挡:stop, 恢复后restart,resume

配置改变:销毁和重建

配置AdnroidManifest中activity节点的configChange属性,配置改变不重建activity

配置改变回调onConfigurationChanged()

activity的启动模式

standard:默认模式,允许重复

singleTop:不允许连续重复,栈顶单例

singleTask:不允许重复,栈内单例

singleInstance:全局单例,系统应用

Fragment

也是页面容器,实现碎片化,速度快

基本用法:创建布局文件,创建fragment子类,activity动态/静态加载

生命周期

相比fragment的区别

onAttach():与activity绑定时

onCreateVIew():创建视图时

onActivityCreated():activity onCreate后

onDestroyVIew():移除时

onDetach():解绑时

可以使用FragmentTransaction.setMaxLifecycle干预生命周期

组件获取:

fragment.getActivity()

FragmentManager.findFragmetnById()

数据传递:方法调用、viewModel,handler,braodcast

服务组件

Service

基本用法:AndroidManifest注册,实现Service类,启动或者绑定

生命周期

onCreate,onStartCommand(),onDestory()

onCreate,onBind(),onUnbind(),onDestory()

与activity通信

定义Binder子类,实现getService方法返回Service对象,实现onBInd方法返回binder对象,实例化ServiceConnection对象,实现onServiceConnected()方法,从中获取到Service实例,activity中调用bindService(),传递sc对象。

广播组件

Broadcast

作用:系统通知应用响应的工具

基本用法

静态广播:AdnroidManifest注册,创建实现类,onReceive接收,Context.sendBroadcast发送广播

动态广播:Context.registerReceiver()注册

ContentProvider

应用提供数据增删改查

基本用法

生产者:AdnroidManifest注册,创建实现类

消费者:AdnroidManifest申明权限

意图组件

Intent

意图,是需要系统解决的需求

基本用法

显示Intent,指定类实现

隐式Intent,提供动作数据类型frage来让系统判断

android通信组建

Handler

线程间通信

必须在UI线程中更新UI

基本用法:创建handler实现handlerMessage,构造Message,发送,在handlerMessage更新UI

原理:java层消息队列管理消息,native层资源释放

Binder

进程间通信

mmap一次拷贝性能好,linux进程隔离所以不能用共享内存

基本用法

服务端定义AIDL文件,编写service,提供实体类jar包

客户端拿到AIDL文件,绑定service,获得接口持有对象

原理:cs架构,binder驱动和ServiceManager管理服务的注册和获取,传递代理对象。

从Activity冷启动看Binder。