Android基本组件|青训营笔记

92 阅读3分钟

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

Android基本组件

认识程序

开发者视角:

  • 程序就是代码加资源
  • 做程序是为了改变世界
  • 怎么做程序:用一定的知识加经验 用户视角:
  • 程序就是界面互动和记忆
  • 目的是为了工作视频游戏
  • 从应用市场官网的地方获取

Android基础组件

界面组件

1.Activity

可以理解为一个界面容器 作用:前台交互,程序入口,布局容器 基本用法:

  • 1.创建一个Activity,并在AndroidManifest.xml声明,并配置桌面程序入口
  • 2.声明一个布局文件,然后到Activity代码文件中写入
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

总结:注册->布局->绑定

2.Activity的生命周期

  • onCreate():创建时回调。一般在此时创建视图和数据绑定
  • onStart():Activity已经启动,马上进入前台,但是不可见
  • onResume():基本完全可见,用户可以交互,位于Activity栈顶
  • onPause():(如果退出,或者切换Activity切换至此)部分可见,下一个为onResume()或者onStop()
  • onStop():此时彻底不可见,下一个是onDestory()或者onRestart()
  • onRestart():重启Activity,下一个是onStart()
  • onDestory():彻底销毁,释放所有资源
  • onSaveInstanceState():系统恢复界面时调用,(非正常关闭回调)可以保存数据,不支持持久化数据
  • onRestoreInstanceState()/onCreate():用于数据恢复 当配置改变场景时:先销毁,再重建

销毁:onresumed-onSaveInstanceState-onpause-onstop-ondestory

重建:oncreate-onstart-onrestoreinstancestate-onresume

如果不需要重建就在AndroidManifest中配置Activity节点的configChange属性

  • local:语言改变
  • fontScale:字体大小改变
  • orientation:屏幕旋转
  • keybordHidden:键盘显示隐藏
  • 配置改变:onConfigurationChanged()

Activity生命周期图示: image.png

3.Activity启动模式(配置launchmode)

  • standard:默认模式,页面允许重复
  • singleTop:不允许页面连续重复,回调onNewIntent()
  • singleTask:不允许同个栈内重复,会将其他界面全部清掉,然后调用onNewIntent()
  • singleInstance:整个系统不允许重复

4.Fragment

本来目的:

  • 解决屏幕尺寸碎片化问题 现在目的:
  • 1.将不同界面用fragment重载,可以快速切换
  • 2.将页面组件分离,轻量级页面容器

基本用法:

  • 1.创建Fragment布局文件
  • 2.创建Fragment子类,加载布局文件
  • 3.Activity加载Fragment
    • 静态加载:布局中绑定
    • 动态加载:FragmentManager加载

5.Fragment生命周期

  • 基本与Activity一致
  • onAttach():Fragment与Activity建立关联时调用
  • onCreateView():当Fragment创建视图时调用
  • onActivityCreated():Activity的onCreate方法中已返回时调用(静态绑定时使用)
  • onDestroyView():当Fragment中的视图被移除时调用
  • onDetach():Fragment和Activity取消关联时调用

Fragment生命周期图示: image.png

6.Fragment(与Activity交互)

组件获取: Fragment获取Activity中的组件

:getActivity().findViewByld(R.id.xxx)

Activity获取Fragment中的组件

:getFragmentManager.findFragmentByld(R.id.fragment.xxx)

数据传递:

Activity传数据给Fragment

:setArguments(Bundle bundle)

Fragment传递数据给Activity:

  • 通过对象直接传递(方法调用/接口调用)
  • 通过viewmodel/handler/brodcast/eventbus等通信

服务组件

1.Service(没有界面的任务)

基本用法:

  • 1.使用<service.../>标签在AndroidManifest中注册
  • 2.创建对应的实现类
  • 3.加载:startService()/bindService()需要交互时使用 生命周期:

image.png

2.与Activity通信

image.png

广播组件

1.Broadcast

目的:系统通过广播实现通知

静态广播:

  • 1.注册:使用<receiver.../>在AndroidManifest中注册
  • 2.创建:建立实现类
  • 3.接收:在实现类onReceive()中接收广播
  • 4.发送:Context.sendBroadcast()

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

常用广播:

image.png

数据组件

1.ContentProvider(获取系统数据)

用法:

image.png

2.Intent

给系统表达意图

image.png

基本用法:

image.png

系统能力:

image.png

Android通信组件

多线程通信:Handler

处理主线程之间通信(对界面更新改变界面属性只能在主线程中进行)

基本用法:

image.png

核心原理:

image.png

进程间通信:Binder

基本用法:

image.png

核心原理:

image.png

image.png

标题: Android基本组件|青训营笔记