Android 双应用实例的一点记录
2020-03-06 15:23
1781 查看
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表示属于主实例。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Android应用程序组件Content Provider应用实例(3)
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android跨应用启动实例详解
- Android应用开发记录
- Android通讯录、通话记录、短信、应用等模糊查询方法
- Android JNI 应用实例
- Android百度地图实例详解之仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,轨迹回放,导航等)
- android学习14#--Handler消息传递机制实例应用
- Android应用实例之---使用Linkify + 正则式区分微博文本链接及跳转处理
- Android应用底部导航栏(选项卡)实例
- 闹钟实例与远程机制AIDL工具android:process=":remote"结合应用
- Android应用中对于微信分享的实例及问题
- 【Android应用实例之二】跟随手指的小球——自定义View应用
- 【Android】Content Provider应用实例
- [Android实例] 唤醒锁: 检测 Android 应用中的 No-Sleep(无法进入睡眠)问题 (转载)
- android应用开发中收集的异常日志解决方法记录
- android实例讲解----Tomcat部署Web应用方法总结
- Android应用中拍照后获取照片路径并上传的实例分享
- Android应用Design Support Library完全使用实例
- Android深入浅出系列之实例应用—简单的手指拖动图片,图片滑来滑去显示应用Gallery和BaseAdapter以及ImageView的使用