这是我参与「第四届青训营 」笔记创作活动的第2天
1、从四个角度看,安卓的四大组件有
1.1界面组件 :Activity & Fragment
1.2服务组件 :Service
1.3广播组件 :Broadcast
1.4数据组件 :ContentProvider & ContentResolver
1.1、为什么使用Activity
前台交互、程序入口、布局容器
相册列表页:GridView + Adaptor
相册图片页:GridView + Adaptor
大图页:Viewpager + Adaptor
2、安卓5.0之前的版本,保存数据在只能在onPause()进行,安卓5.0之后系统调整了生命周期回调的一个逻辑,我们就可以在onStop()里面进行数据的保存。onDestroy()不一定能走到,系统回收的时候可能会被直接杀死。
3、请求权限让你授权,这个时候使用Activity就会出现部分遮挡。
1、部分遮挡 2、遮挡恢复
4、页面全遮挡
1、页面全遮挡 234、遮挡恢复
5、配置改变场景,比如相册的适配旋转屏幕需求
1、销毁:Resumed - onSavelnstanceState() - onPause() -onStop() - onDestroy()
2、重建: onCteate()- onStart() - onRestorelnstanceState() - onResume()
6、配置改变不重建Activity : AndroidManifest中配置Activity节点的configChange属性
local :语言改变
fontScale :字体大小改变
orientation :旋转屏幕
keybordHidden :键盘显示隐藏
配置改变:onConfigurationChanged()
提醒配置发生了改变
7、解决接电话Crash问题
问题原因:页面被回收导致本地变量被置空
问题解决:
1添加判空逻辑避免空指针问题
2在页面回收生命周期中储存数据,页面重建时进行恢复onSavelnstanceState()中写入需要保存的数据
onRestorelnstanceState()进行数据恢复
8、Activity (启动模式-standard )
standard :默认模式,允许重复
singleTop :不允许连续重复
singleTask :不允许同个栈内重复
singlelnstance :整个系统不允许重复
9、解决多个首页问题
问题:加入首页按钮后,点击会在当前页面加入首页,返回后首页会消失。
解决:将首页launchmode设置为singleTask
10、Fragment设计是为了处理碎片化,常见的两个方面:
1、把不同的页面用Fragment重载(速度快
2、做一部分的组件分离
11、Fragment (生命周期)
12、Fragment总结
13、ContentProvider(基本用法)
生产者
1 注册:AndroidManifest中使用<provider.../>
属性: authorities / exported / readPermission / writePermission
2 创建:建立相应的ContentProvider实现类
方法:onCreate / getType / insert / delete / update / query
14、扫描系统现有图片
15、Intent 意图
16、Intent(系统能力)
电话:Intent(Intent.ACTION_DIAL, Uri.parse("tel:10010"))
短信:lntent(Intent.ACTION_SENDTO, Uri.parse("smsto:10010"))
网页:lntent(Intent.ACTION_VIEW, Uri.parse("https://www.baidu.com"))
邮件:Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:someone@domain.com"))
地图:Intent(Intent.ACTION_VIEW, Uri.parse("geo:39.9,116.3".))
拍照:Intent(MediaStore.ACTION_IMAGE CAPTURE)
设置:Intent(android.provider.Settings.ACTION_SETTINGS)
市场: Intent(Intent.ACTION_VIEW, Uri.parse("market:/ldetails?id=" + packageName))
使用:startActivity(intent)
17、总结-基础组件
Activity 界面容器
Fragmen 轻量界面容器
Service 后台服务
BroadCast 广播组件
ContenProvider 数据组件
Intent 意图组件
通信组件和控制组件的总结: