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

来源:互联网 发布:特效制作软件app 编辑:程序博客网 时间:2024/05/21 10:30

       因为之前曾经遇到过一次关于安卓生命周期两个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,调用的生命周期:


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








0 0
原创粉丝点击