专栏首页MelonTeam专栏关于Android进程,你需要知道的

关于Android进程,你需要知道的

导语 Android系统是怎样杀进程的,native进程是怎么管理的?本文为你解密

一、Android进程管理

Android是基于组件工作的,每个组件可以通过android:process节点指定在一个独立进程中执行,所以一个app里面可能会有多个Android进程。系统在强制停止app的时候是怎么干掉这些进程呢?

                             ActivityManagerService相关逻辑

这里我们可以看到核心逻辑,首先遍历出来该packageName下的所有Android进程放在procs集合里,接着我们在for循环里分别杀之。

这里我们可以看到调用Process的killProcessQuiet方法去杀进程,实际上最终调用linux进程机制发送-9信号将相关进程杀掉。

这里我们着重看一下killProcessGroup方法,这个逻辑是5.0之后新增的。看名字我们可以大概猜测一下是杀进程组,那Android里面的进程组什么样的呢?什么样的进程会被放在进程组里呢?

二、进程组

Android进程组借鉴了Linux进程组的机制,实际上就是fork出来的子进程会被和Android进程放到同一个进程组里面。

但是这里面不同的是,Android里面同一个进程组的进程会被记录的/acct/uid_xxx/pid_xxx/cgroup.procs文件下,这样当系统强制停止app的时候,就会从这个文件里面读取进程并杀之。

这块逻辑是5.0之后新增的。也是为了堵之前不杀native进程的漏洞。因为这个逻辑,所以之前市面上很成熟的native进程守护保活方案失效了。当然这里面还是有可以的做文章的空间,想要保活依然可以做到。不过Android每个版本都由相应的进化,所以需要分析源码来找到突破口。

最后给一张Android进程的分析图:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 重磅整理---Android进程保活组件

    导语 Android进程保活的文章很多,但是基本没有一个完整的工程化的东西。所以在这里整理主流的保活方案,将其工程化到github上供大家直接使用。 ...

    MelonTeam
  • 移动互联网IM之协议设计

    导语:如果想自己动手实现一个移动互联网IM app,要怎么做?第一个要解决的问题就是IM协议的设计。本文将讲述如何从0到1设计一个私有的tcp协议。 虽...

    MelonTeam
  • OpenGL ES读书笔记(一)—初始庐山真面目

    1. OpenGL ES简介 OpenGL ES(OpenGL for Embedded Systems)是以手持和嵌入式设备为目标的高级3D图形应用程序编程接...

    MelonTeam
  • 10-1 进程如何工作

    见贤思齊
  • 「Linux 底层原理」理解进程内存布局,掌握程序动态

    简单来讲,进程就是运行中的程序。更进一步,在用户空间中,进程是加载器根据程序头提供的信息将程序加载到内存并运行的实体。

    CSDN技术头条
  • Linux的进程线程及调度

    操作系统中的经典定义: 进程:资源分配单位。 线程:调度单位。 操作系统中用PCB(Process Control Block, 进程控制块)来描述进程。...

    用户4940323
  • 1.进程管理

    11、对进程的描述错误的是( d) A.进程是动态的概念 B.进程执行需要处理机 C.进程是有生命期的 D.进程是指令的集合

    见贤思齊
  • Python学习,多进程了解一下!学爬虫不会用多进程能行吗?

    首先我们先做一个小脚本,就用turtle画4个同心圆吧!这样在演示多进程的时候比较直观。代码如下:

    云飞
  • Linux笔记(10)| 进程概述

    父进程返回正整数,子进程返回0,在执行fork函数之前,操作系统只有一个进程,fork函数之前的,代码只会被执行一次,在执行fork函数之后,操作系统有两个几乎...

    飞哥
  • linux进程管理

    查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux,ps -ef,正常与grep连用

    小小咸鱼YwY

扫码关注云+社区

领取腾讯云代金券