Android分层的原因是?
Android系统分三层,最上层application应用层,第二层Framework层,第三层native层,
-
Android 中应用层和服务层 不在同一个进程,系统服务在单独的进程中
-
Android 中不同应用属于不同的进程中
Android应用和系统service运行在不同的进程是为了安全、稳定、以及内存管理的原因,但是应用和系统服务需要通讯和分享数据
-
安全性,每个进程都单独运行,可以保证应用对系统层的隔离
-
稳定性:如果某个进程崩溃不会导致其他进程崩溃
-
内存分配:如果某个进程不需要了可以从内存中移除,并且回收对应的内存
多进程运行的好处?
每一个 App 是一个虚拟机,每个虚拟机相互隔离;
而虚拟机分配给各个进程的运行内存是有限制,LMK (lowMemoryKill) 也会优先回收对系统资源的占用多的进程。
- 突破内存限制:使用多进程加载图片
- 功能稳定性:独立的通讯进程保持长连接的稳定性,
- 规避系统内存泄漏:独立的WebView 进程隔离内存泄漏导致的问题;
- 隔离封信:对应不稳定的功能放入独立进程,避免导致主进程崩溃
很多App在运行中都使用了多进程的模式
wexin和QQ的进程列表,如下图:
OOM 和 crash 的log 是如何被收集到? 通过其他独立进程来收集信息