采取多进程的使用场景应用应自身需要需采用多进程,有些模块因特殊原因需运行在单独进程 为了加大一个应用可使用的内存,使用多进程来获取多份内存空间。Android 对单个应用的最大内存做了限制,早期的为 16M,不同设备大小不同 调用系统或第三方平台应用。由于是两个进程,所以必须使用跨进程的方式开启多进程模式
创建新的进程,在多进程模式中,不同进程的组件会拥有独立的虚拟机,Application 以及内存空间。它就相当于两个不同应用采用了 sharedUID 模式。
方式一
以此方式,进程名为包名: remote。属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中。
- android:process=":remote"
方式二
以此方式,进程名为 com.ethanco.test.remote。属于全局进程,其他应用通过 ShareUID 方式可以和它跑在同一进程中。
- android:process="com.ethanco.test.remote"
方法三
通过 JNI 在 native 层去 fork 一个新的进程
使用多进程会造成静态变量和单例模式完全失效 Android 为每个进程都分配一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,导致不同的虚拟机访问同一个类的对象会产生多份副本。 线程同步机制完全失效因为不是同一块内存,那么不管是锁对象还是锁全局类都无法保证线程同步 SharedPreferences 的可靠性下降 SharedPreferences 不支持两个进程同时去执行写操作,否则会导致一定几率的数据丢失。 SharedPreferences 底层是通过读 / 写 XML 文件来实现的 Application 会多次创建当一个组件跑在一个新的进程中的时候,由于系统要在创建新的进程同时分配独立的虚拟机,所以这个过程其实就是启动一个应用的过程。因此,相当于系统又把这个应用重新启动一遍。 在多进程情况下,防止 Application 多次创建就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: