android:activity的生命周期(跳转到其他activity)

一,官方文档:

https://developer.android.google.cn/guide/components/activities/activity-lifecycle?hl=zh-cn

官方对生命周期的说明图

二,代码:

package com.example.okdemo1;

import android.app.ActivityOptions;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.example.imagelib.ImageListActivity;
import com.example.okdemo1.activity.PreferenceActivity;
import com.example.okdemo1.model.Goods1;
import com.example.okdemo1.model.Goods2;
import com.example.okdemo1.model.Goods3;
import com.example.okdemo1.model.MessageModel;
import com.example.okdemo1.model.UserListEntity;
import com.example.okdemo1.model.UserListItemEntity;
import com.google.gson.Gson;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;

import java.io.IOException;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "Activity生命周期";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        //写日志create事件
        Log.d(TAG, getClass().getSimpleName() + " - onCreate");
        //给按钮增加点击事件
        Button myButton = findViewById(R.id.apibutton);
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 处理点击事件
                Intent intent = new Intent(MainActivity.this, PreferenceActivity.class);
                // 启动目标Activity
                startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());
                System.out.println("点击完成");
             }
        });
    }


    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, getClass().getSimpleName() + " - onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, getClass().getSimpleName() + " - onResume");
    }

    @Override
    protected void onPause() {
        Log.d(TAG, getClass().getSimpleName() + " - onPause");
        super.onPause();
    }

    @Override
    protected void onStop() {
        Log.d(TAG, getClass().getSimpleName() + " - onStop");
        super.onStop();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG, getClass().getSimpleName() + " - onRestart");
    }

    @Override
    protected void onDestroy() {
        Log.d(TAG, getClass().getSimpleName() + " - onDestroy");
        super.onDestroy();
    }


}
  1. 创建状态(Created)‌:

    • onCreate()‌:Activity 第一次被创建时调用。用于初始化 Activity,如设置布局文件、初始化变量等。
  2. 启动状态(Started)‌:

    • onStart()‌:Activity 变为可见时调用。此时 Activity 还未获取焦点,不能与用户交互。
  3. 恢复状态(Resumed)‌:

    • onResume()‌:Activity 进入前台,用户可以与之交互时调用。这是接收用户输入的最佳时机。
  4. 暂停状态(Paused)‌:

    • onPause()‌:Activity 失去焦点但仍然可见时调用。例如,弹出一个对话框或启动一个半透明的 Activity 时。
  5. 停止状态(Stopped)‌:

    • onStop()‌:Activity 完全不可见时调用。此时 Activity 仍在内存中保留其状态和数据,但不再对用户可见。
  6. 重启状态(Restarted)‌:

    • onRestart()‌:Activity 从停止状态重新启动时调用。在调用 onStart() 和 onResume() 之前调用。
  7. 销毁状态(Destroyed)‌:

    • onDestroy()‌:Activity 被销毁时调用。在此方法中应释放所有资源,避免内存泄漏。

 

总结:

      onResume()和onPause()是相对的,分别是指能交互和不能交互
      onStart()和onStop()是相对的,分别是指可见和不可见
      onCreate()和onDestroy()是相对的,分别是指创建和销毁

 

三,测试效果:

1,启动app:

2,跳转到其他activity:

3,从其他activity返回:

4,退出:

 

posted @ 2025-05-10 09:05  刘宏缔的架构森林  阅读(93)  评论(0)    收藏  举报