前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Android进程,你需要知道的

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

作者头像
MelonTeam
发布2018-01-04 14:51:35
1.7K0
发布2018-01-04 14:51:35
举报
文章被收录于专栏:MelonTeam专栏MelonTeam专栏

导语 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进程的分析图:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Android进程管理
  • 二、进程组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档