这是我参与「第四届青训营」笔记创作活动的第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生命周期图示:
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生命周期图示:
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()需要交互时使用 生命周期:
2.与Activity通信
广播组件
1.Broadcast
目的:系统通过广播实现通知
静态广播:
- 1.注册:使用<receiver.../>在AndroidManifest中注册
- 2.创建:建立实现类
- 3.接收:在实现类onReceive()中接收广播
- 4.发送:Context.sendBroadcast()
动态广播:注册Context.registerReceiver()
常用广播:
数据组件
1.ContentProvider(获取系统数据)
用法:
2.Intent
给系统表达意图
基本用法:
系统能力:
Android通信组件
多线程通信:Handler
处理主线程之间通信(对界面更新改变界面属性只能在主线程中进行)
基本用法:
核心原理:
进程间通信:Binder
基本用法:
核心原理:
标题: Android基本组件|青训营笔记