Android之Activity生命周期

Activity类中定义了7个回调方法,覆盖了活动生命周期的每一个环节。
这里写图片描述

这里写图片描述

为了测试一个活动的生命周期流程,我编写了一个测试代码。

package com.studio.androidlifestyledemo;

import android.content.Intent;
import android.nfc.Tag;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("life", "onCreate: ");
    }

    @Override
    protected void onStart()
    {
        super.onStart();
        Log.d("life", "onStart: ");
    }

    @Override
    protected void onResume()
    {
        super.onResume();
        Log.d("life", "onResume: ");
    }

    @Override
    protected void onPause()
    {
        super.onPause();
        Log.d("life", "onPause: ");
    }

    @Override
    protected void onStop()
    {
        super.onStop();
        Log.d("life", "onStop: ");
    }

    @Override
    protected void onRestart()
    {
        super.onRestart();
        Log.d("life", "onRestart: ");
    }

    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        Log.d("life", "onDestroy: ");
    }

}

运行模拟器执行代码后,观察LogCat中的日志如下
这里写图片描述
由此可见,当一个Activity可见时,会经历三个环节,onCreat创建,onStart打开,onResume实现交互。
之后我们再点击返回键关闭Activity,观察LogCat中的日志如下
这里写图片描述
由此可见当一个Activity被关闭时,会经历三个环节onPause,onStop和onDestroy

那么之后我们再试着从MainActivity中打开另外一个SecondActivity,观察LogCat日志

package com.studio.androidlifestyledemo;

import android.content.Intent;
import android.nfc.Tag;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity
{
    private Button btn_startAcivity;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("life", "onCreate: ");
        initView();
        setListener();
    }

    private void setListener()
    {
        btn_startAcivity.setOnClickListener(new ButtonListener());
    }

    private void initView()
    {
        btn_startAcivity= (Button) findViewById(R.id.btn_newActivity);
    }

    class ButtonListener implements View.OnClickListener
    {
        @Override
        public void onClick(View v)
        {
            switch(v.getId())
            {
                case R.id.btn_newActivity:
                {
                    Intent intent=new Intent(MainActivity.this,SecondActivity.class);


                    startActivity(intent);
                    break;
                }
            }

        }
    }


    @Override
    protected void onStart()
    {
        super.onStart();
        Log.d("life", "onStart: ");
    }

    @Override
    protected void onResume()
    {
        super.onResume();
        Log.d("life", "onResume: ");
    }

    @Override
    protected void onPause()
    {
        super.onPause();
        Log.d("life", "onPause: ");
    }

    @Override
    protected void onStop()
    {
        super.onStop();
        Log.d("life", "onStop: ");
    }

    @Override
    protected void onRestart()
    {
        super.onRestart();
        Log.d("life", "onRestart: ");
    }

    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        Log.d("life", "onDestroy: ");
    }

    /**
     * 按下Android返回键时触发的监听事件
     */
    @Override
    public void onBackPressed()
    {
        super.onBackPressed();
        Log.d("life", "onBackPressed: ");
    }

}

首先我们运行代码,这时打开的是第一个MainActivity,LogCat日志中依然和之前一样
这里写图片描述
此时,我们点击MainActvity中的Button按钮跳转到SecondActivity
这里写图片描述
这时LogCat新出现了五条日志,第一个onPause指的是MainActivity进入的生命周期环节(编写测试代码的时候没有注意,不小心将打印MainActivity生命周期环节的Log标签和SecondActivity的都设置成life了),之后的onCreat,onStart,onResume指的就是SecondActivity经历的生命周期环节,最后的onStop又是MainActivity经历的环节。由此可见,当一个新的Activity覆盖了原来Activity的时候,原来的Activity先经历onPause,然后新Activity经历一个完整的onCreat,onStart,onResume过程变为可见状态,这时原来的Activity就完全进入了不可见状态,因此最后经历onStop。
之后我们再按下返回键返回MainActivity,观察日志变化
这里写图片描述
我们可以发现第一条日志是我们点击返回键触发的一个打印log的监听事件,第二条onPause指的是SecondActivity经历的环节,然后MainActivity将经历onRestart->onStart->onResume的环节,最后SecondActivity经历onStop和onDestroy被销毁。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值