关于安卓Activity生命周期滴总结

       因为之前曾经遇到过一次关于安卓生命周期两个activity之间跳转后,到底调用了哪些生命周期的面试题,我自认为答得不够理想,所以引发出我滴这一篇文章,关于activity生命周期滴探究。

      

1:activity启动的时候调用的生命周期;

      先来说说我们测试的流程吧,第一用Androidstudio创建一个项目,然后呢创建一个Activity,取名叫MainActivity,然后创建一个对应的MainActivity对应的布局文件叫做activity_main,里面分别放置了一个textView 和一个用于跳转的button;代码如下:

<pre name="code" class="java">public class MainActivity extends AppCompatActivity {


    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(getClass().getName(), "我是onCreate");

        init();

        setUpView();
    }
    private void init() {

        button = (Button) findViewById(R.id.button1);
    }
    private void setUpView() {

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(getClass().getName(), "我是onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(getClass().getName(), "我是onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(getClass().getName(), "我是onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(getClass().getName(), "我是onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(getClass().getName(), "我是onDestroy");
    }


    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(getClass().getName(), "我是onRestart");
    }
}


 activity_main的代码也分别如下: 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="yuan.lifeperiod.com.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:textSize="25sp"
        android:text="我是第一个页面"
        android:textColor="#000"
        android:gravity="center"/>


    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="@android:color/black"
        android:text="我是一个按钮"
        android:textColor="#fff"
        android:layout_margin="10dp"
        android:textSize="25sp"/>
</LinearLayout>

接下来 就是运行测试滴时刻了:

第一步贴上运行滴效果图:


第二步,我们可以看到logcat输出滴生命周期:



没错,第一次运行启动的时候,activity生命周期就是onCreate->onStart->onResume;


2:activity启动后,按下home键调用的生命周期:

  这时候就是答案揭晓滴时刻,我按下home键,可以看到生命周期调用了哪些


没错,调用了onPause->onStop;

然后呢,我再直接打开它,又分别调用了这些生命周期


可以看到调用了onRestart->onStart->onResume;

接着我再大胆滴测试了一把,按了home键,然后直接从后台销毁它,发觉生命周期木有变化



还是跟原来滴一模一样。

当我再好奇滴又重新打开一次的时候,发现activity已经被销毁了;然后生命周期又开始重新调用了:




3:activity启动后,按下返回键调用的生命周期:

还是原来滴MainActivity启动后,我直接点下手机返回按钮,可以看到分别调用了这些生命周期:


然后呢我们再重新打开它一下


可以看到又调用了onCreate->onStart->onResume

3:activity启动后,按下按钮,弹出dialog后Activity调用的生命周期:


4:activity启动后,跳转到另一个activity,调用的生命周期:


然后呢,我再重新按一下返回按钮,看一下又重新调用了哪些生命周期:








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值