验证和观察Activity生命周期【Intent跳转】

创建测试项目,验证和观察Activity生命周期,使用Intent实现Activity之间的跳转:

1、创建TestActivity项目;

2、创建SecondActivity及相应布局;

3、在MainActivity和SecondActivity中重写onStart()、onResume()等生命周期事件方法,在其中使用Log输出日志信息;

4、在MainActivity中编写点击按钮的onClick()方法,使用Intent打开SecondActivity;

5、运行程序,观察在Activity的创建、显示、关闭、切换等恢复显示等过程中各个生命周期事件方法的触发情况。


0.创建项目

根据要求随便创建一个项目即可

1.创建SecondActivity及相应布局

在Android Studio中,右键点击项目的app目录,选择“New” > “Activity” > “Empty Activity”。

在这里插入图片描述

命名新的Activity为SecondActivity,并在创建布局文件时选择activity_second.xml

在这里插入图片描述

activity_second.xml定义布局

以下是一个简单的示例,包含一个TextView和一个Button:

<?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"
    android:padding="16dp"
    android:gravity="center">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is SecondActivity"
        android:textSize="18sp"
        android:textColor="#000"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Go Back"
        android:id="@+id/backButton"/>

</LinearLayout>

实现效果

在这里插入图片描述

2.重写生命周期方法

导入TAG,并设置常量标签

请确保导入android.util.Log类,并设置一个常量标签

    private val TAG = "SecondActivity"

MainActivitySecondActivity中,在MainActivitySecondActivity中重写需要观察的生命周期方法(例如onStart()onResume()等)。

并在这些方法内部使用Log输出日志信息

@Override
protected void onStart() {
    
    
    super.onStart();
    Log.d(TAG, "onStart() called");
}

@Override
protected void onResume() {
    
    
    super.onResume();
    Log.d(TAG, "onResume() called");
}

直接复制进入Android Studio将会自动转换!!

在这里插入图片描述

转换的代码

    override fun onStart() {
     
     
        super.onStart()
        Log.d(TAG, "onStart() called")
    }

    override fun onResume() {
     
     
        super.onResume()
        Log.d(TAG, "onResume() called")
    }

MainActivity代码

package com.leo.activity_1

import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.activity.ComponentActivity


class MainActivity : ComponentActivity() {
    
    
    private val TAG = "MainActivity"
    override fun onCreate(savedInstanceState: Bundle?) {
    
    
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main)
    }
    override fun onStart() {
    
    
        super.onStart()
        Log.d(TAG, "onStart() called")
    }

    override fun onResume() {
    
    
        super.onResume()
        Log.d(TAG, "onResume() called")
    }
    fun openSecondActivity(view: View?) {
    
    
        val intent = Intent(this, SecondActivity::class.java)
        startActivity(intent)
    }
}

SecondActivity代码

package com.leo.activity_1

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View

class SecondActivity : AppCompatActivity() {
    
    
    private val TAG = "SecondActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
    
    
        super.onCreate(savedInstanceState)
        setContentView(R.layout.second)
    }
    override fun onStart() {
    
    
        super.onStart()
        Log.d(TAG, "onStart() called")
    }

    override fun onResume() {
    
    
        super.onResume()
        Log.d(TAG, "onResume() called")
    }
    fun goBack(view: View?) {
    
    
        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
    }
}

3.打开SecondActivity

添加按钮

activity_main.xml中添加一个按钮,为按钮添加android:onClick="openSecondActivity"属性,这将关联按钮点击事件与openSecondActivity方法

如果activity_main.xml不存在,请自行创建

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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:padding="16dp"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Open Second Activity"
        android:id="@+id/openSecondButton"
        android:layout_centerInParent="true"
        android:onClick="openSecondActivity" />

</RelativeLayout>

添加方法

在MainActivity中编写按钮的onClick()方法:

    public void openSecondActivity(View view) {
    
    
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);
    }

ktlion代码

    fun openSecondActivity(view: View?) {
     
     
        val intent = Intent(this, SecondActivity::class.java)
        startActivity(intent)
    }

4.运行程序并观察生命周期事件:

  • 在Android Studio中,点击绿色的运行按钮以运行你的应用程序。
  • 在模拟器或连接的Android设备上,点击按钮以触发跳转到SecondActivity
  • 观察Logcat窗口中的输出,查看生命周期方法的调用情况,了解Activity的创建、显示、关闭和切换过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果出现java.lang.RuntimeException: Unable to start activity ComponentInfo{com.leo.activity_1/com.leo.activity_1.SecondActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.——出现了不兼容的问题

需要点击mainifests,修改theme为

@style/Theme.AppCompat.DayNight.DarkActionBar

在这里插入图片描述

实现效果
请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_22841387/article/details/133278390