在Activity生命周期的各阶段方法中添加打印输出代码(用log.i打印输出),通过Activity的各种状态变换观察输出的结果,熟悉生命周期内各方法的运行时机。学会在控制台设置过滤条件,方便查看log的打印输出结果。
在Activity生命周期添加打印出代码:
实现代码:
MainActivity:
package com.example.activity1;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
public static final String M_TAG="Activity1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(M_TAG,"MainActivity onCreate() invoked!");
}
protected void onStart(){
super.onStart();
Log.i(M_TAG,"MainActivity onStart() invoked!");
}
protected void onResume(){
super.onResume();
Log.i(M_TAG,"MainActivity onResume() invoked!");
}
protected void onRestart(){
super.onRestart();
Log.i(M_TAG,"MainActivity onRestart() invoked!");
}
protected void onPause(){
super.onPause();
Log.i(M_TAG,"MainActivity onPause() invoked!");
}
protected void onStop(){
super.onStop();
Log.i(M_TAG,"MainActivity onStop() invoked!");
}
protected void onDestroy(){
super.onDestroy();
Log.i(M_TAG,"MainActivity onDestory() invoked!");
}
public void goToSecondActivity(View view){
Intent intent=new Intent(this,SecondActivity.class);
startActivity(intent);
}
public void goToThirdActivity(View view){
Intent intent=new Intent(this,ThirdActivity.class);
startActivity(intent);
}
}
SecondActivity:
package com.example.activity1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class SecondActivity extends AppCompatActivity {
public static final String M_TAG="Activity1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity_main);
Log.i(M_TAG,"SecondActivity onCreate() invoked!");
}
protected void onStart(){
super.onStart();
Log.i(M_TAG,"SecondActivity onStart() invoked!");
}
protected void onResume(){
super.onResume();
Log.i(M_TAG,"SecondActivity onResume() invoked!");
}
protected void onRestart(){
super.onRestart();
Log.i(M_TAG,"SecondActivity onRestart() invoked!");
}
protected void onPause(){
super.onPause();
Log.i(M_TAG,"SecondActivity onPause() invoked!");
}
protected void onStop(){
super.onStop();
Log.i(M_TAG,"SecondActivity onStop() invoked!");
}
protected void onDestroy(){
super.onDestroy();
Log.i(M_TAG,"SecondActivity onDestory() invoked!");
}
}
ThirdActivity:
package com.example.activity1;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class ThirdActivity extends AppCompatActivity {
public static final String M_TAG="Activity1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.thirdactivity_main);
Log.i(M_TAG,"ThirdActivity onCreate() invoked!");
}
protected void onStart(){
super.onStart();
Log.i(M_TAG,"ThirdActivity onStart() invoked!");
}
protected void onResume(){
super.onResume();
Log.i(M_TAG,"ThirdActivity onResume() invoked!");
}
protected void onRestart(){
super.onRestart();
Log.i(M_TAG,"ThirdActivity onRestart() invoked!");
}
protected void onPause(){
super.onPause();
Log.i(M_TAG,"ThirdActivity onPause() invoked!");
}
protected void onStop(){
super.onStop();
Log.i(M_TAG,"ThirdActivity onStop() invoked!");
}
protected void onDestroy(){
super.onDestroy();
Log.i(M_TAG,"ThirdActivity onDestory() invoked!");
}
}
activity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GO_TO_Scond_Activity"
android:onClick="goToSecondActivity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GO_TO_Third_Activity"
android:onClick="goToThirdActivity"/>
</LinearLayout>
secondactivity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是第二个页面"
android:textSize="30sp"/>
</LinearLayout>
secondactivity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:layout_width="160dp"
android:layout_height="80dp"/>
</LinearLayout>
在AndroidManifest.xml中添加:
<activity android:name=".SecondActivity"/>
<activity android:name=".ThirdActivity"
android:theme="@style/Theme.AppCompat.Dialog"></activity>
实验结果:
点击GO_TO_Scond_Activity后控制台打印信息:
单击返回键后控制台打印信息:
界面运行效果: