Android基础组件课堂总结|青训营笔记

78 阅读3分钟

这是我参与【第四届青训营】笔记创作活动的第一天

一、本堂重点内容:

本节介绍 Android 基础组件。我学习了 Android 相关组件的功能以及使用方法,实现了几个简单需求

二、详细知识点介绍:

1.什么是程序

从开发者视角来看,是用自己的知识和经验将代码和相关资源进行整合可以改变世界的东西

从用户视角来看,是可以从应用商店、搜索引擎里下载,借助界面、互动、记忆来实现一些工具,打游戏,看视频的东西

2.Android基础组件类型

界面组件

服务组件

广播组件

数据组件

3.Activity界面容器(生命周期)

-onCreate():创建时回调,一般在此处创建视图和绑定数据

-onStart():已启动,即将进入前台

-onResume():与用户开始交互,位于Activity栈顶

-onPause():Actvity失去焦点或已暂停,Activity界面部分可见,下一个生命周期是OnResume()或OnStop()

-Stop():Activity不再可见,下一个回调是()onRestart()或onDestory()

-onRestart():重启已停止的Activity,下一个回调是onStart()

-onDestory():销毁Actvity,释放该Activity的所有资源

-onSavelnstanceState():在非正常关闭时回调,用于保存数据不支持持久化数据

-onRestorelnstanceState()/onCreate():用于恢复数据

配置改变环境:1 销毁:Resumed-onSavelnstanceState()-onPause()-onStop()- onDestroy()2 重建:onCteate()-onStart()-onRestorelnstanceState()- onResume()

配置改变不重建Activity:AndroidManifest中配置Activity节点的configChange属性 local:语言改变 fontScale:字体大小改变 orientation:旋转屏幕 keybordHidden:键盘显示隐藏 配置改变:onConfigurationChanged()

4.Activity

启动模式-standard:默认模式,允许重复

启动模式-singleTop:不允许连续重复

启动模式-singleTask:不允许同栈内重复

启动模式-singleInstance:整个系统不允许重复

5.Fragment(生命周期)

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

与Activity的交互

组件获取 1 Fragment获取Activity中的组件: getActivity().findViewByld(R.id.xxx) 2 Activity获取Fragment中的组件:getFragmentManager.findFragmentByld(R.id.fragment xxx) 数据传递 1 Activity传数据给Fragment: setArguments(Bundle bundle2 Fragment传数据给Activity: a 通过对象直接传递(方法调用/接口调用) b 通过viewmodel/handler/broadcast/eventbus等通信

6.Service基本用法

注册(AndroidManifest中使用标签)、创建(建立相应的Service实现类)、加载startService(),bindService()

与Activity的通信:1 定义Binder子类,并实现getService()方法,返回Service对象2 实现Service类onBind()方法,返回上述Binder对象 3 实例化ServiceConnection对象,实现onServiceConnected()方法,从中获取到Service实例4 Activity中调用bindService()方法,并传递步骤3的ServiceConnection对象,将流程跑起来5 Activity既可以通过调用Service实例中的方法进行直接通信

7.Broadcast(基本用法)

生产者 1 注册:AndroidManifest中使用<provider.../> 属性:authorities /exported / readPermission/writePermission2 创建:建立相应的ContentProvider实现类 方法:onCreate / getType / insert / delete / update / query 消费者 1 声明:AndroidManifest中声明权限2 使用:context.getContentResolver()方法:insert/delete/update /query

8.Intent(基本用法)

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

9.Handle(基本用法)

1 创建:新建Handler,实现handleMessage(Message)2 构造Message:what/setData() 3 发送:子线程调用Handler.sendMessage(Message)发送Message4 处理:在Handler的handleMessage(Message msg)主线程更新UI

10.Binder(基本用法)

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

三、实践练习例子:

图片浏览器

解决接电话Crash问题

四、课后个人总结:

了解了安卓基础控件和通信组件

但还需多多实践巩固理解

掌握了一套学习新知识的方法论

五、引用参考:

bytedance.feishu.cn/file/boxcnb…