Android-多进程

2020-09-03  本文已影响0人  有腹肌的豌豆Z

什么是进程


什么是多进程


为什么要使用多进程


如何创建多进程

<service
    android:name=".MyService"
    android:process=":remote">
</service>

<activity
    android:name=".MyActivity"
    android:process="com.shark.ipctest.remote2">
</activity>

多进程弊端

对于前两个问题,可以这么理解,在Android中,系统会为每个应用或进程分配独立的虚拟机,不同的虚拟机自然占有不同的内存地址空间,所以同一个类的对象会产生不同的副本,导致共享数据失败,必然也不能实现线程的同步。

由于SharedPreferences底层采用读写XML的文件的方式实现,多进程并发的的读写很可能导致数据异常。

Application被多次创建和前两个问题类似,系统在分配多个虚拟机时相当于把同一个应用重新启动多次,必然会导致 Application 多次被创建,为了防止在 Application
中出现无用的重复初始化,可使用进程名来做过滤,只让指定进程的才进行全局初始:

public class MyApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        String processName = "com.shark.ipctest";
        // if (getPackageName().equals(processName)){
        if (getPackageName().equals(getProcessName())){
            // do some init
        }
    }
}
public static String getProcessName() {
    try {
        File file = new File("/proc/" + android.os.Process.myPid() + "/" + "cmdline");
        BufferedReader mBufferedReader = new BufferedReader(new FileReader(file));
        String processName = mBufferedReader.readLine().trim();
        mBufferedReader.close();
        return processName;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

Android中的多进程通信方式

Android中支持的多进程通信方式主要有以下几种,它们之间各有优缺点,可根据使用场景选择选择:

上一篇下一篇

猜你喜欢

热点阅读