Android之Activity的生命周期

Android之Activity的生命周期_第1张图片

Android之Activity的生命周期_第2张图片

程序正常启动时:

onCreate()->onStart()->onResume();
onCreate()在活动第一次创建时被调用,主要用于加载布局
onStart()这个方法在活动由不可见变为可见的时候调用。
onResume这个方法在活动准备好和用户进行交互的时候调用。
此时的活动一定位于返回栈的栈顶,并且处于运行状态

三种调用的场景:

	一个Activity启动另一个Activity: onPause()->onStop(),
再返回:onRestart()->onStart()->onResume()

	程序按back 退出: onPause()->onStop()->onDestory(),
再进入:onCreate()->onStart()->onResume();

	程序按home 退出: onPause()->onStop(),
再进入:onRestart()->onStart()->onResume();

以下情况下都只会触发onPause而不会触发onStop:

一个透明的、或者包含Dialog的Activity出现
 锁屏
 闪退:代码不正确或者内存不足

执行onStop:

按home键返回桌面
启动另一activity把原activity完全遮住

Activity透明:

使用主题来使其透明,只需在Manifest中activity的设置如下:			 
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen“

虽然activity是透明了,但是其上的view如textview、button等控件还是可见的。如果只有一个activity,那么它下面的activity就会完全暴露出来。根据生命周期分析可知,下面的activity此时的状态在Pause。

MainActivity: onCreate: 
MainActivity: onStart: 
MainActivity: onResume: 
MainActivity: onPause: 
NormalActivity: onCreate: 
NormalActivity: onStart: 
NormalActivity: onResume: 

而此时我按Back键,一个奇怪的现象发生了:透明activity pause后,下面的activity resume,然后透明activity stop,最后destroy。

NormalActivity: onPause: 
MainActivity: onResume: 
NormalActivity: onStop:
NormalActivity: onDestroy: 

活动不可见:
返回上一个活动:

你可能感兴趣的:(lifecycle,Activity,android)