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一般都是不同的】?