前言

打工仔开始学习android,主要目的是速成了解下结构和最基本的用法,然后重点关注逻辑层,对于UI表现方面跳过,然后我是大致根据官方文档以及《第一行代码》来过一下结构,今天先记录下框架和组件的逻辑。

正文

Android应用的层级

最底层基于linux内核层,然后依次往上是系统库包括一些c,安卓运行时等,然后试试应用框架层包含一些API以及Android自带的核心应用,最上面是应用层就是那些应用程序

四大组件

  • Activity:交互口,
  • Service:后台运行组件,例如后台播放音乐
  • BroadcastReceiver:广播接收器,用户应用传递消息
  • ContentProvider:内容提供者,用于管理应用数据

安卓的特点在于,任何应用可以启动其他应用的组件

Intent

在Activity,Service,BroadcastRecerver之间通过异步Intent来进行相互启动,Intent又分为显式和隐式,显式就是在Intent中指定好下一个组件,隐式就是在清单中配置过滤条件来做相应Intent

Activity的生命周期

七个回调函数来响应Activity状态变换

当Activity停止状态可能因为内存不足而被系统回收,那么想要在onCreate时恢复他的临时数据就需要在之前回收时利用onSaveInstanceState来进行保存

Activity的启动方式

四个启动方式

  • standard 标准模式,每次都新建一个实例对象
  • singleTop 如果在任务栈顶发现了相同的实例则重用,否则新建并压入栈顶
  • singleTask 如果在任务栈中发现了相同的实例,将其上面的任务终止并移除,重用该实例。否则新建实例并入栈
  • singleInstance 允许不同应用,进程线程等共用一个实例,无论从何应用调用该实例都重用

https://juejin.im/post/6844903781486821389

BroadcastReceiver

https://juejin.im/post/6844903601215635469

分为动态注册(在代码中调用Context.registerReceiver()方法)和静态注册(在AndroidManifest.xml里通过标签声明,例如开机启动)

用一个观察者模式进行注册,

然后广播类型又可以分为标准广播(异步),有序广播

ContentProvider

https://juejin.im/post/6844903431333740552

同样是在AndroidManifest.xml中进行注册,用做下层数据封装,方便操作和权限安全配置,ContentResolver做统一的操作

Service

https://juejin.im/post/6844903474002395144#comment

通用需要注册,然后两种启动方式startService(),bindService(),注意两种启动方式销毁的不同

总结

大致上吧第一行代码过了一遍,大致体系有所了解,然后我会加速看和学习。。。