android对于内存有一定的限制,很多手机上对内存的限制是完全不同的。我们的应用程序其实就是一个进程,这个进程是完全独立的,这个进程分配的内存是一定的,所以我们经常会遇到OOM的问题。但,你可能不知道的是,你可以指定应用程序的一些组件运行在不同的进程中,而不是那个被用于启动应用程序的。

我们需要的仅仅是这么一个属性:

android:process

该进程属性可用于activities、services、content providers和broadcast receivers 和指定的进程中应该执行的特定组件。

在这个例子中,我指定MusicService必须执行在一个单独的“music”的进程:

<manifest ...>  <application    android:icon="@drawable/ic_launcher"    android:label="@string/app_name"    android:theme="@style/Theme.Main" >    <activity      android:name=".MusicActivity"      />    <service      android:name=".MusicService" android:process=":music"    />  </application></manifest>

这样我们就可以把不同的组件放入不同的进程,它们自身的内存也会变大。但这就出现了如何进行多进程间通信的问题。幸运的是Intent可以跨进程“旅行”,Handlers和Messengers也可以。。你也可以依靠AIDL(Android接口定义语言)和Binder。

总之,万事无绝对,这种方式适合的是一些分层比较清晰和功能比较独立的模块,如果你想要更详细的了解这个问题可以参考这篇文章。

参考自:

https://github.com/bboyfeiyu/android-tech-frontier/tree/master/androidweekly/%E6%AC%A2%E8%BF%8E%E6%9D%A5%E5%88%B0Android%E5%A4%9A%E8%BF%9B%E7%A8%8B%E6%97%B6%E4%BB%A3

更多相关文章

  1. 浅谈如何避免Android内存溢出
  2. Android进程和应用生命周期
  3. Android进程保活方法 --转自腾讯Bugly公众号
  4. Android菜鸟的成长笔记(22)——Android进程间传递复杂数据(AIDL)
  5. 【Android 内存优化】Bitmap 图像尺寸缩小 ( 考虑像素密度、针对
  6. Android 系统(243)---Android进程系列第一篇---进程基础

随机推荐

  1. uni-app实现一进入H5页面,背景音乐自动播
  2. webpack
  3. 系统控制—清除历史消息
  4. 吉利屋短链接api对接教程
  5. 【前端 · 面试 】HTTP 总结(一)—— HTTP
  6. 删除、修改省名称
  7. json 基础啊,xml异步请求,post和get区别
  8. 模板字面量、标签函数、解构赋值与对象字
  9. PHP与JS数据遍历
  10. PHP基础学习与软件搭建