zoukankan      html  css  js  c++  java
  • 利用Android多进程机制来分割组件

    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

  • 相关阅读:
    CentOS 7.x 二进制方式安装mysql5.7.24
    Java集合框架学习总结
    deque 归纳
    KMP学习笔记
    luogu 3393 逃离僵尸岛
    luogu 1280 尼克的任务
    HDU4871 Shortest-path tree(点分治)
    BZOJ4399 魔法少女LJJ
    BZOJ4771 七彩树
    (BUILDER)建造者与(FACTORY)工厂模式 的比较
  • 原文地址:https://www.cnblogs.com/tianzhijiexian/p/4391941.html
Copyright © 2011-2022 走看看