安卓基础知识必备|青训营笔记

105 阅读3分钟

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

01 基础组件

1.1 界面组件

activity

activity是界面容器,分为前台交互、程序入口、布局容器三个阶段,在manifast文件里注册,在xml文件里布局,在mainactivity里绑定。

activity的生命周期分为:

  • onCreate():创建时回调,一般在此处创建视图和绑定数据
  • onStart():已启动,即将进入前台
  • onResume():与用户开始交互,位于Activity栈顶
  • onPause(): Actvity失去焦点或已暂停,Activity界面部分可见, 下一个生命周期是onResume()或onStop()
  • onStop(): Activity不再可见, 下一个回调是onRestar()或onDestory()
  • onRestart():重启已停止的Activity, 下一个回调是onStart()
  • onDestory():销毁Actvity, 释放该Activity的所有资源
  • onSavelnstanceState():在非正常关闭时回调,用于保存数据,不支持持久化数据
  • onRestorelnstanceState() / onCreate():用于恢复数据

例子:

  • 打开页面时,onCreate(),onStart(),onResume()。关闭页面时,onPause(),onStop(),onDestroy()。
  • 部分遮挡时,onPause()。遮挡恢复,onResume()。
  • 页面全遮挡,onStop()。遮挡恢复,onRestart(),onStart(),onResume()。

image.png

fragment

activity切换是要走IPC的,用fragment速度更快,解决了碎片化的问题。

基本用法: 1、创建Fragment布局文件 2、创建Fragment子类,加载布局文件 3、Activity加载Fragment 3.1静态加载:布局中绑定 3.2动态加载: FragmentManager加载

生命周期:

image.png

  • onAttach() Fragment和Activity建立关联时调用
  • onCreateView()当Fragment创建视图时调用
  • onActivityCreated() Activity的onCreate()方法已返回时调用
  • onDestroyView()当Fragment中的视图被移除时调用
  • onDetach() Fragment和Activity 取消关联时调用

image.png

1.2 服务组件service

用法: 1、注册: AndroidManifest中使用<servic...>标签 2、创建:建立相应的Service实现类 3、加载: startService()/bindService()

生命周期

image.png

1.3 广播组件broadcast

静态广播 1、注册: AndroidManifest中使用<receiver../><intent-filter../> 2、创建:建立相应的BroadcastReceiver实现类 3、接收:在步骤2类onReceive()中接收广 播 4、发送: Context.sendBroadcast() 动态广播 注册: Context.registerReceiver()

1.4 数据组件

contentprovider

生产者 1、注册: AndroidManifest中使用<provider../> 属性: authorities/exported/readPermission/writePermission 2、创建:建立相应的ContentProvider实现类 方法: onCreate/getType/insert/delete / update / query

消费者 1、声明: AndroidManifest中声明权限 2、使用: context.getContentResolver() 方法: insert / delete/update/ query

intent

给系统说要做什么,一个activity通过intent可以onCreat()另一个activity。

基本用法: 1、显式Intent setComponent/setClass指定具体类 2、隐式Intent Action (动作) Data (数据) Category (类别) Type(数据类型) Component (组件) Extra (扩展信息) Flag (标志位)

02 通信组件

2.1 handler

原理:

image.png 用于处理主线程间的消息。

2.2 binder

image.png 用于处理进程间的消息。 Android 系统是基于 Linux 内核的,Linux 已经提供了管道、消息队列、共享内存和socket等 IPC 机制。那为什么 Android 还要提供 Binder 来实现 IPC 呢?主要是基于性能、稳定性和安全性几方面的原因。

基本用法: 服务端 1.定义一个AIDL文件 2.实现描述的接口,编写service 3.如果有实体类,需要提供实体类(jar包形式) 客户端 1.拿到AIDL文件 2.绑定服务,获得接口持有对象