Android 多进程管理

149 阅读1分钟

Android分层的原因是?

Android系统分三层,最上层application应用层,第二层Framework层,第三层native层,

  • Android 中应用层和服务层 不在同一个进程,系统服务在单独的进程中

  • Android 中不同应用属于不同的进程中

Android应用和系统service运行在不同的进程是为了安全、稳定、以及内存管理的原因,但是应用和系统服务需要通讯和分享数据

  • 安全性,每个进程都单独运行,可以保证应用对系统层的隔离

  • 稳定性:如果某个进程崩溃不会导致其他进程崩溃

  • 内存分配:如果某个进程不需要了可以从内存中移除,并且回收对应的内存

多进程运行的好处?

每一个 App 是一个虚拟机,每个虚拟机相互隔离;

而虚拟机分配给各个进程的运行内存是有限制,LMK (lowMemoryKill) 也会优先回收对系统资源的占用多的进程。

  • 突破内存限制:使用多进程加载图片
  • 功能稳定性:独立的通讯进程保持长连接的稳定性,
  • 规避系统内存泄漏:独立的WebView 进程隔离内存泄漏导致的问题;
  • 隔离封信:对应不稳定的功能放入独立进程,避免导致主进程崩溃

很多App在运行中都使用了多进程的模式

多进程APP

wexin和QQ的进程列表,如下图:

微信进程列表

OOM 和 crash 的log 是如何被收集到? 通过其他独立进程来收集信息