本文已参与「新人创作礼」活动,一起开启掘金创作之路。
本系列记录一下自己的Android学习心得,有错误的地方希望大佬们可以指正呀~
开始启程
只是简单简单简单了解一下Android系统~
Android系统架构
- 应用层
- Framework框架层(View系统,活动管理器,包管理器...)
- 额外的C库+虚拟机(Dalvik已淘汰,目前使用ART)
- 硬件接口封装
- linux C语言内核
在Dalvik虚拟机上,APK中的dex文件在安装时会被优化成odex文件,在==运行时==会被JIT编译器编译成native代码
在ART虚拟机上==安装时==,dex文件会直接由dex2oat工具翻译成oat格式的文件,oat文件中既包含了dex文件中原先的内容,也包含了已经编译好的native代码
Android系统目录
在每个Android手机上都可以查看到
| 目录 | 用途 |
|---|---|
| system/app | 系统APP |
| system/bin | Linux自带组件 |
| system/build.prop | 设备属性信息 |
| system/framework | Framework层 |
| system/lib | lib库层 |
| system/usr | 用户配置 |
| data/app | 用户安装的APP |
| data/data | 内部存储空间 |
| data/system | 系统信息 |
| data/misc | WIFI,VPN,蓝牙等(Mobile Information Service Center) |
应用层四大组件
- Activity 门面
- Service 后台
- Broadcast Receiver 广播
- Content Provider 程序间共享数据
Android系统迭代变更
4.0:
禁止在UI线程中开启网络操作
6.0:
引入了运行时权限
读写SD卡成为危险权限
不再支持HttpClient
7.0:
直接使用本地路径的Uri(file://...)被认为是不安全的,会抛出FileUriExposedException异常
8.0:
静态注册的广播接收器无法接收大部分隐式广播(防止APP未启动就可以开启后台操作)
引入了通知渠道和应用图标上的通知圆点
Service运行在后台时随时会被系统回收,只有应用前台可见时,Service才能稳定运行
9.0:
不再支持HTTP明文,只允许使用HTTPS,强行使用HTTP需要额外配置
使用前台Service需要在Manifest里声明FOREGROUND_SERVICE权限