多进程的相关知识

多进程的相关知识

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

开心一刻:爸爸把客人送走,客气的说:“你慢走。”
儿子天真的说:“爸爸,为什么你送人都要说慢走而妈妈送人出门时都说快走呢?”
爸爸!@#!@#$%@#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值