多进程的相关知识
2016-07-27 17:54
253 查看
多进程的相关知识
1、获取相同ShareUserId程序的Context
案例代码
Context ct=this.createPackageContext ("com.test.serviceID", Context.CONTEXT_IGNORE_SECURITY);
2.利用ShareUserID共享数据 (公司两个产品的 签名和id相同)
2.1 id不同时候 读取资源文件的时候:
try { Context ct=this.createPackageContext ("com.mythou.serviceID", Context.CONTEXT_IGNORE_SECURITY); String str = ct.getString(R.string.appname); Log.d("mythou", str); } catch (NameNotFoundException e) { e.printStackTrace(); }
2.2.拥有相同的UID的时候,如何访问data下数据
try { Context ct=this.createPackageContext ("com.mythou.serviceID", Context.CONTEXT_IGNORE_SECURITY); SharedPreferences sp = ct.getSharedPreferences("appInfo", MODE_PRIVATE); String str2 = sp.getString("appname", "service"); Log.d("mythou", "share preference-->" + str2); } catch (NameNotFoundException e) { e.printStackTrace(); }
两个应用ShareUserId相同,包名相同或不同,打包时签名文件必须相同否则,在如下情况下,第二个安装包在安装时会失败,错误为[INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]:
1.包名相同,签名相同,ShareUserId不同
3、利用StartActivity启动其他应用的
当我们在不同的application中,如application A中的Activity去start一个application B中的Activity,也许你什么Exception都不会得到,也可能会直接Force Close掉。因为再Start Activity时,代码是有去检验permission的。 Uid是用户ID,Android中每个程序都有一个Uid,默认情况下,Android会给每个程序分配一个普通级别互不相同的 Uid,如果用互相调用,只能是Uid相同才行,这就使得共享数据具有了一定安全性,每个软件之间是不能随意获得数据的。而同一个application 只有一个Uid,所以application下的Activity之间不存在访问权限的问题。 但是不同的Application下的应用,访问Activity的时候就存在权限问题。如果设置同一个ShareUserId可以避免这种情况。下面补充一点,如何共享一个程序的数据,如果你需要做一个application,将某些服务service,provider或者activity等的数据,有三个办法可以方便共享数据。
3.1、完全暴露:
这就是android:exported=”true”的作用,而一旦设置了intentFilter之后,exported就默认被设置为true了,除非再强制设为false。当然,对那些没有intentFilter的程序体,它的exported属性默认仍然是false,也就不能共享出去。3.2、权限提示暴露:
这就是为什么经常要设置usePermission的原因,如果人家设置了 android:permission=”xxx.xxx.xx”那么,你就必须在你的application的Manufest中 usepermission xxx.xxx.xx才能访问人家的东西。3.3、私有暴露:
假如说一个公司做了两个产品,只想这两个产品之间可互相调用,那么这个时候就必须使用shareUserID将两个软件的Uid强制设置为一样的。这种情况下必须使用具有该公司签名的签名文档才能,如果使用一个系统自带软件的ShareUID,例如Contact,那么无须第三方签名。4.多进程产生的问题(设置process):
1.静态成员和单利模式完全失效。2.线程同步机制完全失效。
3.sharedpreferences可靠性下降。(不支持两个进程同时写操作,有几率数据丢失)
4.application会多次创建。(分配独立的虚拟机,启动应用的过程)
开心一刻:爸爸把客人送走,客气的说:“你慢走。”
儿子天真的说:“爸爸,为什么你送人都要说慢走而妈妈送人出门时都说快走呢?”
爸爸!@#!@#$%@#
相关文章推荐
- Node.js中child_process实现多进程
- Linux BASH多进程并行处理的方法实现
- c语言多进程tcp服务器示例
- 浅谈Java多进程程序的运行模式
- PHP的pcntl多进程用法实例
- 以实例全面讲解PHP中多进程编程的相关函数的使用
- 深入探究PHP的多进程编程方法
- PHP并发多进程处理利器Gearman使用介绍
- node.js使用cluster实现多进程
- PHP多进程编程总结(推荐)
- 深入解析PHP中的(伪)多线程与多进程
- 详解Java中多进程编程的实现
- 简要分析Java多进程编程的并发控制
- 用map函数来完成Python并行任务的简单示例
- python 多进程通信模块的简单实现
- python多进程操作实例
- Python多进程分块读取超大文件的方法
- python多进程共享变量
- python基于multiprocessing的多进程创建方法
- Python多进程机制实例详解