读书人

Android透过共享用户ID来实现多Activi

发布时间: 2012-12-16 12:02:32 作者: rapoo

Android通过共享用户ID来实现多Activity进程共享【转】

http://mypyg.iteye.com/blog/720406

?

1.同一Apk中的同一包中的Activity调用时进程状况验证?
[1]创建Project:?
?? project name:?FirstProject?
?? package:com.demo?
?? 默认Activity:MainActivity?
[2]添加一个新的Activity:?
?? name:SecondActivity?
[3]修改布局。在MainActivity布局中添加一个Button,当点击此Button时启动SecondActivity。在SecondActivity的布局中放置一个Textview,以证明SecondActivity已启动。?
[4]运行程序,查看此Ap进程情况:?
?? USER:app_36? PID:8360? NAME:com.demo?
?? 点击按钮,启动SecondActivity,再次查看进程情况:?
?? USER:app_36? PID:8360? NAME:com.demo?
???进程列表没有变化,两个Activity运行在同一进程中。?

2.同一Apk中的不同包的Activity调用时进程状况验证?
[1]将SecondActivity挪到包com.demo.second中去,相应修改AndroidManifest.xml中的name为:com.demo.second.SecondActivity?
[2]运行程序,查看此时进程情况:?
?? USER:app_36? PID:10593? NAME:com.demo?
[3]点击按钮启动SecondActivity,查看此时进程情况:?
?? USER:app_36? PID:10593? NAME:com.demo?
???进程列表没有变化,两个Activity运行在同一进程中。即进程name只受AndroidManifest.xml中manifset结点的package属性影响。?

3.同一Apk中Activity process属性修改后进程状况验证?
[1]为SecondActivity添加process属性,其值为":abc",也可以随便是其他的":"开头的字符串,常见的是":remote":?

              >??

            [2]运行firstProject、SecondProject,查看进程情况:?
            ??? USER:app_35? PID:21387? NAME:com.demo?
            ??? 两个Activity运行于同一个进程。?
            9.不同Apk,Share User Id相同,包名不同、签名key不同?
            经实验,安装第二个apk时会提示INSTALL_FAILED_UPDATE_INCOMPATIBLE错误,安装失败。?


            总结:?
            UserId不同时:?
            ????? 包名不同:未设定process属性时,各自的Activity在各自的进程。?
            ??????????????? 即使process指定了包名,也不会和另一个用户的同名包共享进程。?
            ????? 包名相同:?
            ??????????????? 签名相同:覆盖旧的同包名apk。?
            ??????????????? 签名不同:新的apk会安装失败。【签名key一般都是不同的】?
            UserId相同时:?
            ????? 包名不同:未设定process属性时,各自的Activity在各自的进程。?
            ??????????????? process属性指定,则可以共享进程。?
            ????? 包名相同:?
            ??????????????? 签名相同:覆盖旧的同包名apk。?
            ??????????????? 签名不同:新的apk会安装失败。【签名key一般都是不同的】?

读书人网 >Android

热点推荐