Activity的生命周期和启动模式

Android开发最吸引人的魅力在于随随便便拖几个控件,跑一下代码,就能看见在页面上面显示的效果。其中Activity的强大就体现出来了。楼主以前做Web开发,被2000多行的Js代码弄的头昏眼花。后来偶尔一次机会,看见Android拖控件到显示的视频,被吸引着入了门,走上了Android的不归路。做Android开发的这几年,本着能抄代码就不自己动手的精神,走了不少弯路。现在配合多个学习书籍,总结经验,理解原理性的东西,方便下次抄袭(^_^)。

废话不多说,上Activity的生命周期图(这个在面试的时候经常会被问到哎,真不知道有什么可以问的

Activity的生命周期

图片原地址(http://cs.szpt.edu.cn/android/guide/components/activities.html)

Activity从创建到销毁,正常经过的生命流程就是onCreate->onStart->onResume->onPause->onStop->onStop->onDestroy。

但是筒子们在开发的时候,偶会会见到不走寻常路的。

生命周期分析

onCreate:Activity正在被创建,是生命周期的第一个方法,一般初始化的工作都是在这里完成的,比如setContentView加载layout、getIntent获取上个页面传递过来的数据、findViewById、setListener等

onRestart:Activity在重启。一般情况下当应用程序从后台程序变成前台程序的时候,会执行onRestart方法。

onStart:Activity正在启动,Activity处在系统后台可见,用户还没法操作界面上的元素。

onResume:Activity可见了,并且出现在前台。与onStart的区别在于:onStart的时候,Activity处在后台,onResume的时候Activity才显示到前台。

onPause:Activity处在暂停状态,用户没法操作。

onStop:Activity即将停止,可以做微量的回收操作,但不能够太耗时。

onDestroy:Activity即将销毁,可以做回收工作和资源的释放。一般把注册的广播接受者取消注册unregisterReceiver、handler.removeMessages、Timer的cancel等。

测试代码

package com.chunjiangchao.demo;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {
    private static final String tag = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(tag, "onCreate");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(tag, "onStart");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(tag, "onRestart");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(tag, "onResume");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.i(tag, "onPause");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(tag, "onStop");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(tag, "onDestroy");
    }
    


}

 AndroidManifest.xml中的配置

        <activity
            android:name="com.chunjiangchao.demo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
View Code

 正常流程测试:

启动Activity,然后点击后退键销毁,生命周期如下:

启动Activity后,点击Home键

旋转屏幕的生命周期

未完待续(还是夜晚写吧,上午真的造不出来啊)

原文地址:https://www.cnblogs.com/chun-jiang-chao-de-gu-shi/p/5438361.html