1,首先我们需要写测试的周期的例子
新建一个项目,android_period
2,创建一个MainActivity 和 SecondActivity
MainActivity 中的java代码
package com.qiniu.liuhanlin.android_learning;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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);
System.out.println("MainActivity---> onCreate");
Button btn = (Button) findViewById(R.id.test_period);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
MainActivity.this.startActivity(intent);
}
}).start();
}
});
}
@Override
protected void onPause(){
super.onPause();
System.out.println("MainActivity---> onPause");
}
@Override
protected void onStop(){
super.onStop();
System.out.println("MainActivity---> onStop");
}
@Override
protected void onStart(){
super.onStart();
System.out.println("MainActivity---> onStart");
}
@Override
protected void onResume(){
super.onResume();
System.out.println("MainActivity---> onResume");
}
@Override
protected void onRestart(){
super.onRestart();
System.out.println("MainActivity---> onRestart");
}
@Override
protected void onDestroy(){
super.onDestroy();
System.out.println("MainActivity---> onDestroy");
}
}
xml 代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.qiniu.liuhanlin.android_learning.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="test_period"
android:layout_marginBottom="268dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:id="@+id/test_period" />
</RelativeLayout>
SecondActivity中的java代码
package com.qiniu.liuhanlin.android_learning;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
System.out.println("SecondActivity---> onCreate");
}
@Override
protected void onPause(){
super.onPause();
System.out.println("SecondActivity---> onPause");
}
@Override
protected void onStop(){
super.onStop();
System.out.println("SecondActivity---> onStop");
}
@Override
protected void onStart(){
super.onStart();
System.out.println("SecondActivity---> onStart");
}
@Override
protected void onResume(){
super.onResume();
System.out.println("SecondActivity---> onResume");
}
@Override
protected void onRestart(){
super.onRestart();
System.out.println("SecondActivity---> onRestart");
}
@Override
protected void onDestroy(){
super.onDestroy();
System.out.println("SecondActivity---> onDestroy");
}
}
xml代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.qiniu.liuhanlin.android_learning.SecondActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="hello_second"
android:id="@+id/hello_second" />
</RelativeLayout>
2,运行代码
运行顺序,进入MainActivity后点击button按钮,进入SecondActivity后,点击返回键
log 打印如下,log打印打印System.out 的输出信息。点击filter,输入filter name和log tag为System.out 。
打印如下
06-20 14:24:34.401 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onCreate
06-20 14:24:34.402 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onStart
06-20 14:24:34.405 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onResume
06-20 14:24:40.536 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onPause
06-20 14:24:40.558 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onCreate
06-20 14:24:40.558 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onStart
06-20 14:24:40.560 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onResume
06-20 14:24:40.931 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onStop
06-20 14:24:53.048 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onPause
06-20 14:24:53.058 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onRestart
06-20 14:24:53.059 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onStart
06-20 14:24:53.060 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onResume
06-20 14:24:53.469 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onStop
06-20 14:24:53.470 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onDestroy
这样我们就看到了完整的Activity周期。
周期函数说明如下:
一个Activity的创建顺序执行:onCreate,onStart,onResume
从FirstActivity启动SecondActivity时,顺序调用:FirstActivity的onPause,然后SecondActivity的onCreate,onStart,onResume,最后是FirstActivity的onStop
七大事件:
onCreate:
当这个Activity第一次被创建的时候调用,在里面去设置布局文件、或者对按钮绑定监听器等一些静态的操作;
onStart:
当这个Activity能被看到的时候调用;
onResume:
当这个Activity能获得用户焦点,用户能操作这个Activity的时候调用;
onPause:
当要启动另一个Activity时调用,例如当你的程序在运行时,有一个来电,系统调用电话,你的程序被遮挡住时调用,一般在里面写一些保存当前Activity操作数据的代码,以便恢复操作时还原数据;
onStop:
当这个Activity对用户而言不可见的时候调用,如果上一个Activity调用出来的是一个小的对话块,没能完全遮挡住这个Activity,则不会调用上一个Activity的onStop;
onRestart:
当一个Activity对用户不可见了以后,但是没有被销毁,再次要显示的时候,就最先调用onRestart,而不需要再调用onCreate;
onDestory:
销毁Activity,如果你在代码里明确调用了finish方法,则会调用销毁,或者当系统资源不够用的时候,也会自动销毁不可见的Activity,如果再启用已经被销毁的Activity时,需要再调用onCreate;