[转]《Android进程生命周期全解析》在线课程
2021-11-30 08:00:00 Author: blog.csdn.net(查看原文) 阅读量:11 收藏

课程简介

也许你已学习Android应用开发多年,却从未意识到Android应用背后也存在着一整套进程的运作机制?你是否还下意识地认为,Activity的onCreate()函数就等于应用和进程的创建?当你开发高级应用,希望对应用的优先级、进程和任务等进行深度调优的时候,却不知道该如何下手?

本课程通过对以下进阶内容的深度覆盖:

  • 四大组件与Android进程的创建过程

  • Android进程调度组的定义

  • Android进程的优先级计算方法及调度过程

  • OOM内存管理机制及Android进程的三种退出方法

穿过Android应用和四大组件的表象,深入理解Android应用背后那不为人知的进程运作机制,掌握进程与应用和四大组件的内在联系。

通过掌握Android进程的运作机制,可以使我们对Android四大组件的创建、生命周期的调度、组件间协作、Binder在Android运作中的重要作用等知识做到融会贯通,既知其然也知其所以然,在Android应用的深层次开发中更加得心应手。

课程共4节课,全长约4.5小时,课程已全部上线我,无需等候

上课形式:


  • 视频课程(可无限次数回看)

  • 课后练习题(在自己的电脑上进行实际操作)

  • 加入课程讨论答疑群。

老师简介

曾昭毅:武汉理工大学计算机应用技术硕士毕业

曾在群硕软件、深圳仙苗科技有限公司担任软件开发经理、软件研发总监等职,是在实战中成长起来的从单板嵌入式到大型企业级应用系统集成的全栈式工程师。

具有丰富的Arm体系Linux及Android系统移植经验,对基于I2C、SPI、USB、AC97、I2S、SDIO/EMMC、UART等总线的各种设备如LCD、触摸屏、3G/4G模块、Wifi、GPS、摄像头、HDMI、CODEC等驱动移植有深厚的掌握。

c87d888fffb19e5b2a1672336ed16946.png 

Android系统进程的诞生

  • Android系统中进程的组成

    • 内核进程

    • 系统进程

    • 应用进程

  • 进程基本创建方式

    • fork

    • exec

    • java进程

  • 1号进程init

    • init.rc驱动的系统启动过程

    • 系统属性服务

    • 进程监听服务

    • init.rc文件解析

    • init的启动流程

    • init的主要作用

  • Native进程

    • servicemanager, mediaserver, vold, etc.

    • servicemanager/Binder机制简述

  • Java进程

    • 提供服务:ActivityManagerService, PowerManagerService, etc.

    • Java进程的受精卵——Zygote的启动流程

    • SystemServer

40664c51ca49acfda00a3447e6f88675.png 

应用进程的创建

  • 进程与四大组件关系

  • Android进程管理核心组件的地位和作用

    • ServiceManager

    • ActivityManagerService

    • ActivityThread

    • ApplicationThread

  • 启动Activity触发的进程创建过程

    • ActivityStackSupervisor

    • ActivityStack

    • TaskRecord

    • ActivityRecord

    • 拓扑关系

    • 案例观察

    • 在Activity管理中的作用

    • Activity辅助结构

  • Activity进程创建流程

    • 神奇的执行机制:throw MethodAndArgsCaller

    • ApplicationThread与Looper/Handler的建立

    • 为什么采用socket而不是Binder?

    • Fork的局限性分析

    • 基于Zygote的Java进程创建

    • 跨入ActivityThread

    • 建立与AMS的脐带,心跳开始

    • Application的真正创建

  • 启动Service触发的进程创建过程

    • startService的过程解析

    • bindService的过程解析

    • getServiceDispatcher

    • scheduleBindService

    • publishService

    • onServiceConnected最终获得Service接口

    • ActiveServices

    • ServiceRecord

    • Service辅助结构

    • Service进程创建流程

  • ContentProvider进程创建流程

    • 本地代理ContentResolver

    • publishContentProviders

    • 真实ContentProvider接口的获得

    • ContentResolver

    • ContentProviderRecord

    • CRUD over URI

    • 主要作用简介

    • ContentProvider辅助结构

    • 进程创建流程

  • BroadcastReceiver进程创建流程

    • BroadcastQueue

    • BroadcastHandler

    • 静态注册

    • 动态注册

    • 注册方式

    • Broadcast的特点

    • BroadcastReceiver辅助结构

  • 进程创建流程

    • PackagerManagerService的作用

    • BroadcastReceiver与其他三大组件不同的生命周期特点

02f6b79425dc584d01753e82d461a51d.png 

Android进程调度机制

  • Linux调度策略基础

    • pre-EAS

    • EAS

    • SMP调度的缺点

    • HMP调度的缺点

    • 基于CPU能效模型的调度机制

    • SCHED_NORMAL

    • SCHED_BATCH

    • 优先级定义

    • Linux优先级定义

    • Android优先级定义

    • SCHED_FIFO

    • 实时

    • SHCHED_RR

    • 非实时

    • EAS

  • CGroup - Control Group

    • 对进程调度的能效控制

    • boost

    • prefer_idle

    • 控制进程可加载CPU

    • 控制进程调度时间

    • /dev/cpuctl

    • /dev/cpuset

    • /dev/stune

  • Android中的CGroup定义分析

  • Android调度策略

    • Android调度策略的定义

    • Android调度策略与CGroup的映射关系

  • Android系统进程的调度策略

  • 应用进程/线程优先级调整

    • 应用进程调度组定义

    • 应用进程优先级/调度组的计算流程

    • 调度原则

    • 执行调度

    • 调度组/优先级的设置

    • Java线程优先级

    • 调整时机

    • 调整策略

c0a0666e9d4d931f52373feb62f1c47e.png 

进程退出机制

  • 进程与四大组件生命周期区别

    • 直接动机

    • 根本原因

    • 无主动退出

  • 辅助结构及相关计算

    • Android ADJ定义

    • 不同进程ADJ值的计算方法

    • Cached/Empty进程在ADJ cached slots中的存储算法

    • 维护进程顺序的算法解析

    • LRU list

    • ADJ

  • 三种进程强制退出方法

    • Cached进程的清理

    • Empty进程的清理

    • AMS的内存回收机制及意义

    • forceStopPackage处理流程

    • killBackgroundProcesses处理流程

    • userId的特别含义

    • ADJ值的作用

    • 命令强制结束

    • ActivityManagerService主动清理

  • OOM的最后一刀

    • 进程的重生

    • CGroup之Memory

    • lmkd与Mem CGroup的协作机制

    • ADJ vs MinFree

    • 不同设备的ADJ与minFree的计算

    • OOM状态下对不同ADJ值进程的查杀过程

    • LowMemoryKiller

    • lmkd

    • 留给AMS的烂摊子

苹果和电脑用户报名方法:


电脑浏览器访问yomocode.com(不支持手机访问),先点击网站右上角图标,微信扫码登录,然后在此链接报名:

http://www.yomocode.com/courses/13

手机用户可点击链接一键报名:


 点击试看

安卓手机用户可点击链接一键报名:


 点击报名

详情也可扫描如下二维码添加客服咨询:

b60314848af897e1ea6b02160965608d.png


文章来源: https://blog.csdn.net/21cnbao/article/details/121646674
如有侵权请联系:admin#unsafe.sh