转载

详解 Android Activity 生命周期

从以下几个方面详细说一下Activity的生命周期:

1.回到主屏幕再打开和退出程序的时候。

2.屏幕旋转的时候。

3.打开其它的Activity的情况。

4.打开一个Layou透明的Activity的情况。

源代码: MyApplication.7z

先来一张Activity的生命周期图镇楼。

详解 Android Activity 生命周期

新建一个工程,实现如图所示的生命周期的所有方法,只是在方法里添加一个打印输出,让我们能清楚的看到

当前Activity执行的生命周期回调方法。

@Override protected void onStart() {  System.out.println("onStart");  super.onStart(); } @Override protected void onResume() {  System.out.println("onResume");  super.onResume(); } @Override protected void onPause() {  System.out.println("onPause");  super.onPause(); } @Override protected void onStop() {  System.out.println("onStop");  super.onStop(); } @Override protected void onRestart() {  System.out.println("onRestart");  super.onRestart(); } @Override protected void onDestroy() {  System.out.println("onDestroy");  super.onDestroy(); } 

当我们第一次运行我们的程序,app进入主页面,看一下logcat的输出:执行了onCreate、onStart、onResume方法。

详解 Android Activity 生命周期

1.返回到主屏幕的时候。

我们按一下Home键返回到主屏幕,看一下它的执行的动作。

详解 Android Activity 生命周期

执行了onPause和onStop方法。点击我们的app,进入主程序发现它执行了onRestart、onStart和onResume。

我们第一次运行app的时候是没有执行onRestart方法的。和我们看官方的文档一至,在Activity被停止后再次激活的时候

才会被调用。

Called after your activity has been stopped, prior to it being started again.  Always followed by onStart()

详解 Android Activity 生命周期

我们点击关闭app看一下它会回调哪些生命周期函数。

详解 Android Activity 生命周期

这时它会执行onStop和onDestory方法。至此我们走完了一个最简单的生命周期流程。

2.旋转屏幕的时候。

运行我们的应用程序,和第一次打开一样调用create,start.和resume

详解 Android Activity 生命周期

接下来我们旋转一下屏幕看一下会发生什么。

详解 Android Activity 生命周期

一下子。调用了好多。它是先把Activity关闭掉,再重新new一个activity。这里就要注意了,如果我们的程序

需要支持屏幕旋转,那我这就要调用onSaveInstanceState()方法来保存当前的数据状态,在onCreate方法里恢复

这些状态的值。

3.打开一个其它的Activity.

修改一个我们的程序,在主页面加一个按钮,再加一个Activity。

<Button         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="New Button"         android:id="@+id/button"         android:layout_below="@+id/textView"         android:layout_centerHorizontal="true"         />

点击按钮的时候打开我们新添加的Activity

final Button btn = (Button) findViewById(R.id.button);         btn.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 Intent intent = new Intent(MainActivity.this, MessageTip.class);                 startActivity(intent);             }         });

运行我们的App.还是和之前一样调用 onCreate(),onStart() 和onResume.

详解 Android Activity 生命周期

然后在主页面上按一下我们的按钮,打开另一个Activity.

详解 Android Activity 生命周期

按返回键看一下。

详解 Android Activity 生命周期

它会调用onRestart(),onStart(),onResume。这样和我们讲的方法1.进入主屏幕再返回是一样的。

4.打开透明的Activity.

透明的Activity我们做一个简单的,直接在AndroidManifest.xml里添加一个行代码

详解 Android Activity 生命周期

再运行我们的app.调用那三个方法。

详解 Android Activity 生命周期

点击主页上的按钮打开透明的Activity.看一下调用了哪些函数。

详解 Android Activity 生命周期

只调用了onPause。点击返回

详解 Android Activity 生命周期

调用了onResume()方法。

发现没打开透明的Activity,原Acitvity没有调用onStop()方法,关闭透明的Activity。原Activity没有调用onRestart()

和onStart()方法。

ok就到这里,activity的生命周期非常重要!activity的生命周期非常重要!activity的生命周期非常重要!

重要的事情说三遍!!

源代码: MyApplication.7z

正文到此结束
Loading...