Android 双应用实例的一点记录
来源:互联网 发布:人类进化史知乎 编辑:程序博客网 时间:2024/05/18 01:18
1. 双实例的开关
Setting.java中有一个变量Settings.System.MULTI_PROCESS_ENABLED能动态运行时刻控制双实例功能,当其值为0时,系统会把之前启动的双实例进程都杀掉,而且之后就不能再通过给Intent传递特殊参数来启动双实例了。可以监听这个数据字段来对双实例的开关作出响应。
2. 启动从实例
目前设计的启动入口是用户从Launcher中点击从实例对应的图标。当点击第二个实例图标时,Launcher需要在Intent中携带“android.intent.extra.init_instance”这个额外变量,其值为1就表示需要启动从实例。不带这个额外变量或者其值为0表示启动主实例。
3. 主从实例任务管理
可以通过AMS暴露的getRecentTasks枚举到主从实例对应的任务,在返回的ActivityManager.RecentTaskInfo数据结构中增加了一项instanceId,其值为1表示从实例,为0表示主实例。
AMS的getTasks和getAppTasks函数则会根据调用进程是主实例还是从实例,返回不同的结果。简单的说就是主实例对应的进程只会看到主实例的任务列表,从实例对应的进程只会看到从实例的任务列表。
4. 查询进程是否属于从实例
在进程内部,可以通过Environment.getDataId函数的返回值来判断该进程是否属于从实例。返回值大于0表示这个进程属于从实例,为0表示属于主实例。
通过ActivityManagerNative.getDefault().getInstanceId函数的返回值就可以判断传入的进程(传入参数为进程号)是否属于从实例。返回值大于0表示这个进程属于从实例,为0表示属于主实例。
在ActivityManagerService模块内可以通过判断ProcessRecord对象实例的dataId值来判断对应进程是否属于从实例。值大于0表示这个进程属于从实例,为0表示属于主实例。
Setting.java中有一个变量Settings.System.MULTI_PROCESS_ENABLED能动态运行时刻控制双实例功能,当其值为0时,系统会把之前启动的双实例进程都杀掉,而且之后就不能再通过给Intent传递特殊参数来启动双实例了。可以监听这个数据字段来对双实例的开关作出响应。
2. 启动从实例
目前设计的启动入口是用户从Launcher中点击从实例对应的图标。当点击第二个实例图标时,Launcher需要在Intent中携带“android.intent.extra.init_instance”这个额外变量,其值为1就表示需要启动从实例。不带这个额外变量或者其值为0表示启动主实例。
3. 主从实例任务管理
可以通过AMS暴露的getRecentTasks枚举到主从实例对应的任务,在返回的ActivityManager.RecentTaskInfo数据结构中增加了一项instanceId,其值为1表示从实例,为0表示主实例。
AMS的getTasks和getAppTasks函数则会根据调用进程是主实例还是从实例,返回不同的结果。简单的说就是主实例对应的进程只会看到主实例的任务列表,从实例对应的进程只会看到从实例的任务列表。
4. 查询进程是否属于从实例
在进程内部,可以通过Environment.getDataId函数的返回值来判断该进程是否属于从实例。返回值大于0表示这个进程属于从实例,为0表示属于主实例。
通过ActivityManagerNative.getDefault().getInstanceId函数的返回值就可以判断传入的进程(传入参数为进程号)是否属于从实例。返回值大于0表示这个进程属于从实例,为0表示属于主实例。
在ActivityManagerService模块内可以通过判断ProcessRecord对象实例的dataId值来判断对应进程是否属于从实例。值大于0表示这个进程属于从实例,为0表示属于主实例。
0 0
- Android 双应用实例的一点记录
- Android 线程的一点记录
- android开发的一点问题记录
- Android 编程遇到的一点记录
- 关于Android seekTo的一点记录
- Android平台应用更新的一点想法
- 重装系统的一点记录
- kvo 的一点记录
- shiro的一点记录
- CATransform3D的一点记录
- INSTR的一点记录
- css 的一点记录
- 一点幼稚的记录
- android animation的应用实例
- android animation的应用实例
- android animation的应用实例
- 关于Android x86平台 函数hook知识的一点记录
- 搭建eclipse android开发环境的一点记录
- liunx终端进入、退出python命令行
- spring boot入门实现
- sql 面试题
- 研究生的非学历教育
- Unity3D说明文档翻译-Creating Components
- Android 双应用实例的一点记录
- 创建单链表,求链表长度、查找、插入、删除、合并。
- 短 URL 系统是怎么设计的?
- 安装数据库mysql
- React.js 小书
- VMware 12安装Redhat 7.0详解
- 无法将文件”obj\debug\XXX.dll复制到“bin\Debug\XXX.dll”的错误?
- 设置环境变量
- 打开RecyclerView的正确姿势