先说结论,当ActivityA显示Dialog的时候,对生命周期没有任何影响,不会调用onPause。此时再在dialog里启动ActivityB。生命周期是:
2022-12-23 21:26:13.736 31436-31436/com.example.myapplication D/wangfeng: onPauseA
2022-12-23 21:26:13.773 31436-31436/com.example.myapplication D/wangfeng: onCreateB
2022-12-23 21:26:13.775 31436-31436/com.example.myapplication D/wangfeng: onStartB
2022-12-23 21:26:13.776 31436-31436/com.example.myapplication D/wangfeng: onResumeB
2022-12-23 21:26:14.399 31436-31436/com.example.myapplication D/wangfeng: onStopA
原因:生命周期的回调都是AMS通过Binder通知应用进程调用的。而Dialog,Toast,PoupupWindow本质上都是通过WindowManager.addView()显示的,没有经过AMS,所以不会对生命周期有任何影响。