文章目录
生命周期参考b站视频:第八讲:Activity生命周期演示
一、基本操作
Activity(活动)是一种展示型组件,它主要用于实现应用功能逻辑
,并通过界面 显示数据
或 接收用户输入
。
一个应用程序可以包含零个或多个活动。没有活动的应用程序,用户将无法看到程序界面,这种应用程序通常在后台运行,不涉及用户交互。
二、生命周期
2.0 生命周期的介绍
Activity的生命周期指Activity从
创建到被销毁
的整个过程。
在一个生命周期内,Activity可能存在多种状态。
深入了解Activity的生命周期,有助于更合理管理应用程序资源,设计出效率更高的应用。
Activity生命周期包括创建、可见、获取焦点、失去焦点、不可见、重新可见、销毁等环节,每个环节Activity都定义了相关的回调方法,具体如下:
onCreate()
:Activity创建时调用,通常做一些初始化设置onStart()
:Activity即将可见时调用onResume()
:Activity获取焦点时调用onPause()
:当前Activity被其他Activity覆盖或屏幕锁屏时调用onStop()
:Activity对用户不可见时调用onDestroy()
:Activity销毁时调用onRestart()
:Activity从停止状态到再次启动时调用
记住这张图:
具体操作
2.1 新建LifeActivity项目
2.2 修改第一个页面(xml配置 和 MainActivity)
activity_main.xml:
MainActivity:
2.3 新建第二个页面(SecondActivity 和 xml 配置)
SecondActivity:
activity_second.xml:
2.4 在AndroidManifest.xml 注册 SecondActivity!!!!!!!!!!!!!!
2.5 运行 (至此实现了页面跳转)
2.6 在两个Activity中编写Log
2.7 运行(在logcat中查看)
2.8 实现代码(最终)
MainActivity
package com.situ.lifeactivity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
public static final String TAG="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
show("onCreate被调用");
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
show("onStart被调用");
}
@Override
protected void onResume() {
super.onResume();
show("onResume被调用");
}
@Override
protected void onPause() {
super.onPause();
show("onPause被调用");
}
@Override
protected void onStop() {
super.onStop();
show("onStop被调用");
}
@Override
protected void onDestroy() {
super.onDestroy();
show("onDestroy被调用");
}
@Override
protected void onRestart() {
super.onRestart();
show("onRestart被调用");
}
private void show(String msg){
String clsName=this.getClass().getName();
Log.d(TAG,clsName+"---"+msg);
}
public void clickTurnOther(View view) {
Intent intent=new Intent(this,SecondActivity.class);
startActivity(intent);
}
}
SecondActivity
package com.situ.lifeactivity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
/**
* Created by Song2 on 2021/12/22.
*/
public class SecondActivity extends AppCompatActivity {
public static final String TAG="SecondActivity";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
show("onCreate被调用");
setContentView(R.layout.activity_second);
}
@Override
protected void onStart() {
super.onStart();
show("onStart被调用");
}
@Override
protected void onResume() {
super.onResume();
show("onResume被调用");
}
@Override
protected void onPause() {
super.onPause();
show("onPause被调用");
}
@Override
protected void onStop() {
super.onStop();
show("onStop被调用");
}
@Override
protected void onDestroy() {
super.onDestroy();
show("onDestroy被调用");
}
@Override
protected void onRestart() {
super.onRestart();
show("onRestart被调用");
}
private void show(String msg){
String clsName=this.getClass().getName();
Log.d(TAG,clsName+"---"+msg);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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.situ.lifeactivity.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点我调转"
android:onClick="clickTurnOther"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>
activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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.situ.lifeactivity.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点我调转"
android:onClick="clickTurnOther"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>