AS中实现两个Activity组件之间相互跳转,并观察生命周期

一.Activity组件介绍

1.Activity称为活动组件,通过加载布局XML文件实现界面程序

2.Activity需要在AndroidMainfest中进行注册

3.所有Activity的基类是AppCompatActivity,即若想要复制某一个已有的Activity需要粘贴到AppCompatActivity下

二.Activity的生命周期

1.图示介绍生命周期

在图中可看到Activity所需的生命周期函数

(1)onCreate()  :当Activity第一次被创建时调用

  (2)onStart()  :当Activity显示在屏幕上时调用。此时Activity对用户可见,但还不能接收用户输入 

  (3)onResume   :当Activity能够接收用户输入时调用。此时Activity位于Activity栈的栈顶,是用户当前正在交互的界面

  (4)onPause   :当Activity进入暂停状态时调用

  (5)onStop:当Activity变为不可见时调用。此时Activity已经完全被另一个Activity遮挡住,不再对用户可见。

  (6)onDestory:在Activity被终止前调用。此时Activity即将被销毁,可以做一些回收工作和资源的释放

  (7)onRestart() :当Activity从停止状态重新进入活动状态时调用。通常发生在用户从其他Activity返回到这个Activity

代码展示

 @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("LS","activity2:onRestart...");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("LS","activity2:onPause...");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("LS","activity2:onDestroy...");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("LS","activity2:onStop...");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("LS","activity2:onStart...");
    }



    @Override
    protected void onResume() {
        super.onResume();
        Log.d("LS","activity2:onResume...");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Button button2;
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main2);
        Log.d("zyt","activity2:onCreate...");
        button2 = findViewById(R.id.button2);

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity2.this,MainActivity.class);
                startActivity(intent);

            }
        });

三.实现两个Activity之间相互跳转并观察生命周期的实例

目标:MainActivity与MainActivity2之间相互跳转

1.创建并注册MainActivity2

2.在AndroidMainfest中设置MainActivity为主启动页面

<activity
            android:name=".MainActivity"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

3.编辑MainActivity和MainActivity2的java文件中的onCreat函数

.MainActivity中

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        Button button;
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        Log.d("zyt","activity2:onCreate...");
        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,MainActivity2.class);
                startActivity(intent);

            }
        });

.MainActivity2

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        Button button2;
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main2);
        Log.d("zyt","activity2:onCreate...");
        button2 = findViewById(R.id.button2);

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity2.this,MainActivity.class);
                startActivity(intent);

            }
        });

修改onCreat()函数是在添加完所有生命周期函数后

4.编辑.MainActivity对应的布局文件和.MainActivity2对应的布局文件

.MainActivity对应的activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/activity1"
        android:textSize="48sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.399" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button1"
        android:textSize="34sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.462"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.566" />

</androidx.constraintlayout.widget.ConstraintLayout>

.MainActivity对应的activity_main2.xml文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textview2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/activity2"
        android:textSize="48sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.444"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.418" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button2"
        android:textSize="34sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.475"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textview2"
        app:layout_constraintVertical_bias="0.104" />

</androidx.constraintlayout.widget.ConstraintLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值