因为之前曾经遇到过一次关于安卓生命周期两个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,调用的生命周期:
然后呢,我再重新按一下返回按钮,看一下又重新调用了哪些生命周期: