ActivityRecord中mComponentName来源讲解

123 阅读1分钟

1. 背景

image.png

用户提示抖音启动的过程中,className获取的值和当前应用顶层启动的值不一致

 

2.抖音相关信息解密

2.1 启动之后顶层Activity

image.png 抖音里面启动的Activity为Splash Activity ,但是AR 里面的ComponentName 为MainActivity。  

3. 技术细节

3.1 AR 中ComponentName的来源

image.png

 

3.2 start U0启动的是哪个Activity

image.png

 

image.png

start U0里面启动的是Intent里面ComponentName值

image.png

4. 本地验证

在代码里面添加日志打印

image.png

4.1 抖音

image.png

image.png

  结果发现,抖音应用里面Intent里面的cmp和最后映射在AR里面的cmp的值不一样。

4.1 Demo

image.png

image.png

自己写的demo中,Intent的cmp和最后AR里面的cmp值是一样的。

 

5. 结论

  1. 抖音的AR里面的cmp和Intent里面启动的cmp不一样是因为抖音在xml里面配置了android:targetActivity="com.ss.android.ugc.aweme.main.MainActivity"导致的
  2. start U0里面填充的是Intent里面带的cmp
  3. ACTIVITY_FOREGROUND_STATE_CHANGED这个埋点里面获取的是AR里面的cmp值