首先,创建了一个主活动MainActivity,然后创建了两个子活动,NormalActivity和DialogActivity,布局中就使用了非常简单的一个TextView,用于显示一行文字。
最主要的区别就是:这两个活动一个是普通的活动,一个是对话框式的活动。主要是在AndroidManifest.xml中修改<activity>标签:
<activity android:name=".NormalActivity"> </activity> <activity android:name=".DialogActivity" android:theme="@style/Theme.AppCompat.Dialog"> </activity>
在主活动的onCreate() 方法中,我们分别为两个按钮注册了点击事件,点击第一个按钮会启动NormalActivity,点击第二个按钮会启动DialogActivity。然后在Activity的7个回调方法中分别打印了一句话,这样就可以通过观察日志的方式来更直观地理解活动的生命周期。
在运行程序后,观察logcat中的打印日志:
- 当MainActivity第一次被创建时会依次执行onCreate() 、onStart() 和onResume() 方法。然后点击第一个按钮,启动NormalActivity,
- 由于NormalActivity已经把MainActivity完全遮挡住,因此onPause() 和onStop() 方法都会得到执行。然后按下Back键返回MainActivity,
- 由于之前MainActivity已经进入了停止状态,所以onRestart() 方法会得到执行,之后又会依次执行onStart() 和onResume() 方法。注意此时onCreate() 方法不会执行,因为
MainActivity并没有重新创建。- 然后再点击第二个按钮,启动DialogActivity
- 可以看到,只有onPause() 方法得到了执行,onStop() 方法并没有执行,这是因为
DialogActivity并没有完全遮挡住MainActivity,此时MainActivity只是进入了暂停状态,并没有进入停止状态。相应地,按下Back键返回MainActivity也应该只有onResume() 方法会得到执行,- 最后在MainActivity按下Back键退出程序
- 此时依次会执行onPause() 、onStop() 和onDestroy() 方法,最终销毁MainActivity。