看源码是线程安全的就用呗,Activity这边的处理,并没有太多的数据竞争,实际的处理是在AMS里,这个是在system_server处理的,和client这端哪个线程调用没多大关系。
并且看execStartActivity里就有synchronized,说明设计的时候就考虑了多线程调用的case
public Instrumentation.ActivityResult execStartActivity(Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode, Bundle options) {
SeempLog.record_str(407, intent.toString());
IApplicationThread whoThread = (IApplicationThread)contextThread;
Uri referrer = target != null?target.onProvideReferrer():null;
if(referrer != null) {
intent.putExtra("android.intent.extra.REFERRER", referrer);
}
if(this.mActivityMonitors != null) {
Object e = this.mSync;
synchronized(this.mSync) {
int N = this.mActivityMonitors.size();
for(int i = 0; i