2019独角兽企业重金招聘Python工程师标准>>>
今天我在项目中遇到一个非常奇怪的问题, 我先描述一下问题 我们在栈内Activity情况如下 A--->B---> C---> D 我们的B为 singleTask模式启动的,其他的界面默认模式启动, 这个时候我们如果再次从D界面启动B界面,那么B的生命周期界面应该为
onNewIntent()--->onReStart()--->onStart()--->onResume(),(请注意刚刚说的这个生命周期是正确的), 但是在我的项目中我却发现生命周期并不是这样显示的 而是显示了 onNewIntent()--->onResume().为什么会出现这种情况呢。根据我的判断我发现这个跟C界面的主题属性有关, 请注意主题中的
当我将
好了我来总结一下:如果我们从一个Activity A 启动一个Activity B的时候,如果Activity B的主题属性中
总结:
style/Theme.Dialog:
-
A1跳转到A2,A2样式为Dialog(@android:style/Theme.Dialog):A1生命周期执行onPause(),返回时onResume()。
-
A1跳转到A2,A2样式不是Dialog(@android:style/Theme.Dialog): A1生命周期执行onPause()-->onStop(),返回时onStart()-onResume()。(一般情况)
-
A1跳转到A2再跳转到A1 A1的启动模式为singleTask,A2样式为Dialog(@android:style/Theme.Dialog):A1生命周期执行onPause() 再次跳转到A1的生命周期是onNewIntent()-->onResume()。
-
A1跳转到A2再跳转到A1 A1的启动模式为singleTask,A2样不为Dialog(@android:style/Theme.Dialog):A1生命周期执行onPause()-->onStop() 再次跳转到A1的生命周期是onNewIntent()-->onReStart()-->onStart()-->onResume()。(一般情况)
注意: 在上面的情况中,A2的生命周期都是是正常的 onCreat()-->onStart()-->onResume()-->onPause()-->onStop()-->onDestroy()
windowIsTranslucent:
-
A1跳转到A2,A2样式属性windowIsTranslucent设置为true(Activity界面透明):A1生命周期执行onPause(),返回时onResume()。
-
A1跳转到A2,A2样式属性windowIsTranslucent设置为fasle(大部分Activity界面):A1生命周期执行onPause()-->onStop(),返回时onStart()-->onResume()。(一般情况)
注意: 在上面的情况中,A2的生命周期都是是正常的 onCreat()-->onStart()-->onResume()-->onPause()-->onStop()-->onDestroy()