您的位置:首页 > 其它

多进程的相关知识

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会多次创建。(分配独立的虚拟机,启动应用的过程)

开心一刻:爸爸把客人送走,客气的说:“你慢走。”

儿子天真的说:“爸爸,为什么你送人都要说慢走而妈妈送人出门时都说快走呢?”

爸爸!@#!@#$%@#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息