Android多进程使用及其带来的问题

  • 1

  • 2

  • 3

  • 4

  • 5

在该例子中,我们将SecActivity的android:process属性设置为”:secActivity”(暂时忽略“:”的意思,稍后介绍),启动程序,打开SecActivity,然后进入adb shell,执行ps命令,查看当前正在运行的进程信息,

这里写图片描述

由上图可以看到,的确由两个进程在运行,其中一个的名字是paul.example.mutliprocessdemo,这正是我们的包名,也就是说,这个就是我们的主进程。另一个的名字是paul.example.mutliprocessdemo:secActivity,这是我们在Manifest文件中设置”:secActivity”的结果。

接下来来介绍“:”的含义,如果一个组件指定的进程名是以“:”开头的,就意味着该进程是一个私有进程。那么何为私有进程?私有进程是和全局进程对应,如果我们在android:process中填写的是完整的包名,那么该进程就是一个全局进程。全局进程允许两个不同的应用(或组件)运行在同一个进程中(使用ShareUID,且签名完全一致);私有进程则不可以。

另外,Application也可以设置android:process属性,来修改所有组件运行进程的名称。

2. 为什么使用多进程

=========================================================================

为什么Android应用要使用多进程?有以下理由,欢迎各位读者补充~

1. 更大的内存分配,我们知道,Android设备限制了每一个进程所分配的内存大小,如果这个大小是32M,那么如果我们的应用有两个进程,那么所能使用的最大内存就是32*2=64M。所以如果用户经常收到OutOfMemory异常,那么就应该考虑使用多进程。

2. 防止进程被杀死。考虑这样一种情况,一个后台进程在播放音乐,此时,内存吃紧,系统需要释放更多的内存,此时系统就会优先把UI进程给杀掉,而不是播放音乐的进程。还有另外一个应用场景,我们可以使用守护进程来保护我们的主进程不被杀死。具体的做法是主进程和守护进程相互监护,若对方被杀死,则重启。

**3. 分担主进程的内存压力。**现在的应用越来越大,我们可以将一些其他的工作放在额外的进程中运行,来降低主进程的压力。

3. Android多进程会带来什么问题

==================================================================================

我们知道,在Android设备上,一个进程对应一个虚拟机实例。而不同的虚拟机之间是相互隔离的,也就意味着,我们不能使用常规方法来共享数据。

但是,这并不意味着两个进程之间无法通信。事实上,有一些方法可以实现进程间通信。比如,Intent,Handler,Messenger,AIDL或者Binder。

另外,多进程还会带来以下问题,

最后

在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值