All activities inside an application run in one process?
这取决于应用程序清单中android:process属性的值。
如果没有为清单中的应用程序/活动标签定义属性android:进程,则默认情况下所有活动都将以单个进程运行(进程名称将在清单中定义的包名称)
package="com.so.test" android:versionCode="1" android:versionName="1.0">
在上面的清单中,所有活动都运行在进程com.so.test,ps命令输出在adb shell中:
# ps
app_39 668 33 84492 20672 ffffffff afd0c51c S com.so.test
如果为活动指定了android:进程,则将使用相同的用户标识创建新进程,并在该进程中运行该活动。
package="com.so.test" android:versionCode="1" android:versionName="1.0">
android:process="com.so.p1">
如果清单定义如上
Activity1 runs in com.so.p1 process
Activity2 runs in com.so.p2 process
Activity3 runs in com.so.p3 process
在adb shell中输出ps
# ps
app_39 650 33 83192 20900 ffffffff afd0c51c S com.so.p1
app_39 659 33 83188 20864 ffffffff afd0c51c S com.so.p2
app_39 668 33 84492 20672 ffffffff afd0c51c S com.so.p3
如果活动需要在本清单中未定义的另一个进程中运行,则两个APK都应该使用相同的证书进行签名。