美文网首页Android探索
关于多进程的探索

关于多进程的探索

作者: 清明捉鬼 | 来源:发表于2018-05-31 19:03 被阅读3次
前言

其实很久之前就又知道多进程这种方式,因为在我理解中OOM的最终解决方案就是使用此种方式,再加上之前就了解到插件化思想, 更加坚信多进程是中大型应用必走之路,其开启方式也无非是在清单文件中利用progress配置及使用c代码fork一个进程,fork做法一般用于保活功能,不过去年被项目所逼花了时间研究保活,整理了不少资料,得出一个结论对于现在的手机 ,保活功能就是一个伪命题,这种一般框架命名为含有Daemon的Service

多进程是个啥?

个人理解图

无标题.png
私有进程的完整名称为默认主进程名称+配置名称,例:主进程名为:www.biabia.club,则私有进程名为www.biabia.club:jiaoBaBa
此处sharedUserId后两个App的进程如何运行处理没做探究,但是其数据可以共享,据说这样可以共享虚拟机,共享方式暂未探索,但是共享uid的几个App必须使用相同签名方可奏效。
多进程应用场景

1.模块化时几个组件间数据隔离,或者模块化时扩大应用内存 ,适用于组件化思想开发
2.给WebView和图片加载控件保驾护航,使其拥有充足内存,且一处崩溃不影响整个App运行。
3进程皆有5个优先级,可以加以利用,譬如音乐播放案例,可以开启一前台Service并将此Service指定一公有进程运行

多进程使用问题

1.Application多次初始化,可以在onCreate判断其主进程name进行过滤的初始化某些东西
法1:

public static String getProcessName(Context cxt, int pid) {
        ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
        if (runningApps == null) {
            return null;
        }
        for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
            if (procInfo.pid == pid) {
                return procInfo.processName;
            }
        }
        return null;
    }

法2:

    public static String getProcessName2() {
        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;
        }
    }

2.静态变量等数据完全隔离:
今日在使用中访问静态变量,在A Activity做出改变,但在B Activity获取时发现获取的扔是初始值,突然想起可能是IPC隔离,IPC通信这里都是老生常谈,虽说传值方式很多,但便捷性还有待进一步探索。
3.单Activity指定进程,启动与杀死即为进程启动与结束,表现为Application在启动时仍旧会重启
待探究:同App便捷IPC通信;多组件同进程进程状况及多组件之间的数据共享状况;共享uid进程处理方式及共享虚拟机概念是什么;跳转Activity无权限原因。

参考:
https://blog.csdn.net/aj758461601/article/details/24361347
https://blog.csdn.net/coding_glacier/article/details/8230159
https://blog.csdn.net/yuanlong_zheng/article/details/7338276
http://blog.spinytech.com/2016/11/17/android_multiple_process_usage_scenario/
https://developer.android.com/reference/android/os/Process

相关文章

  • 关于多进程的探索

    前言 其实很久之前就又知道多进程这种方式,因为在我理解中OOM的最终解决方案就是使用此种方式,再加上之前就了解到插...

  • Linux 死循环脚本控制CPU使用率

    批量杀进程命令(例如杀关于nginx的进程)

  • 二.进程(2)进程控制

    2.2 进程控制 进程控制的基本过程: 进程的创建 进程的终止 进程的阻塞与唤醒 进程的挂起和激活 关于进程的亲属...

  • 关于进程

    Hello 进程 代码在没有运行的时候叫程序 ,而运行着的代码叫进程一、fork函数 (注意,fork函数只能在U...

  • 关于进程

    进程控制块用于表示进程状态——每个PCB包括进程的一系列实体:1、 识别信息:进程自己的PID和父进程PPID2、...

  • IPC机制总结

    本文基于《Android艺术探索》中知识的总结而创 1 简介 1.1 简述 IPC 进程间通讯或跨进程通讯andr...

  • 第二章 IPC机制详解(1)

    本文为Android开发艺术探索的笔记,仅供学习 1 IPC 含义就是进程间通信或者跨进程通信 线程是CPU调度的...

  • Linux-5 进程管理

    关于进程 process ============================================...

  • Android中的IPC

    参考Android开发艺术探索 IPC简介 IPC:Inter-Process Communication,进程间...

  • 第2章 2-2进程控制与同步

    进程控制的基本过程: 进程的创建 进程的终止 进程的阻塞与唤醒 进程的挂起和激活 关于进程的亲属关系 系统中运行的...

网友评论

    本文标题:关于多进程的探索

    本文链接:https://www.haomeiwen.com/subject/cgfcsftx.html