android Activity生命周期总结

一:本节知识点

在这里插入图片描述

二:Activity生命周期状态

图片来源与来自这里

在这里插入图片描述
就通过一张图可能不容易理解吧,那举个栗子吧
栗子:新建一个安卓项目,在后端添加以下代码(添加日志打印,重写生命周期相应方法)

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("MainAction","调用onCreeate()");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("MainAction","调用onStart()");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("MainAction","调用onResume()");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("MainAction","调用onPause()");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("MainAction","调用onStop()");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("MainAction","调用onDestroy()");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i("MainAction","调用onRestart()");
    }
      //(点击跳转)点击事件,点击跳转到activity_son
    public void btn_onclick(View view) {
        //启动另一个action
        Intent  intent=new Intent(MainActivity.this,SonActivity.class);
        startActivity(intent);
    }

    public void finish(View view) {
        finish();
    }

运行程序,观看Logcat
在这里插入图片描述
为了更好的观察我们添加相应过滤
在这里插入图片描述
在这里插入图片描述
输入自己日志的Tag
在这里插入图片描述
在这里插入图片描述
①:启动程序(对应图上ActivityStarts)
在这里插入图片描述
②:点击切换到另一个界面
在这里插入图片描述
③:再返回原界面
在这里插入图片描述
④:退出程序
在这里插入图片描述

总结
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

三:Activity的创建和配置

1:直接创建XML布局文件,然后添加标签
①:直接创建XML布局文件
在这里插入图片描述
②:然后在AndroidManifest.Xml中添加标签
在这里插入图片描述
标签名为".布局名"
在这里插入图片描述
完整名应该是:包名.布局名
在这里插入图片描述
由于上面已经加了包名所以可以省略
在这里插入图片描述
2:直接创建,自动生成标签
在这里插入图片描述
在这里插入图片描述

四:开启和关闭Activity

1:Intent(我们常说的意图)
PackageContext:应用程序包实现的上下文
CLS:要用于意图的组件类。
在这里插入图片描述
创建一个从MainActivity.this下跳转到SonActivity.class中去的意图,然后通过StartActivity方法启动意图
在这里插入图片描述
进入到SonActivity.class中
在这里插入图片描述
通过onCreate()方法进行创建然后按照Activity生命周期
在这里插入图片描述
onCreate()=>onStart()=>onResume()=>当前Activity显示。

2: finish();方法是关闭当前Activity
这里finish是直接在首窗体(启动窗体)里创建的点击事件,当用户点击时当前Activity就关闭了,由于是首窗体(启动窗体),所以用户点击时直接关闭程序。
在这里插入图片描述
3:整个项目代码详情
①: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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/btn_onclick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginBottom="13dp"
        android:onClick="btn_onclick"
        android:text="点击跳转"
        app:layout_constraintBottom_toTopOf="@+id/btn_OnClickfinish"
        app:layout_constraintStart_toStartOf="@+id/btn_OnClickfinish" />

    <Button
        android:id="@+id/btn_OnClickfinish"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="291dp"
        android:onClick="finish"
        android:text="点击关闭程序"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

②:activity_son.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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SonActivity"
    tools:ignore="NamespaceTypo">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="340dp"
        android:text="Hello Word!"
        android:textColor="#000"
        android:textSize="50sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.56"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

③:后端代码

package cn.cg.lifecycle;
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 {

    //由系统调用:回调
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("MainAction","调用onCreeate()");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("MainAction","调用onStart()");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("MainAction","调用onResume()");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("MainAction","调用onPause()");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("MainAction","调用onStop()");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("MainAction","调用onDestroy()");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i("MainAction","调用onRestart()");
    }

    //(点击跳转)点击事件,点击跳转到activity_son
    public void btn_onclick(View view) {
        //启动另一个action
        Intent  intent=new Intent(MainActivity.this,SonActivity.class);
        startActivity(intent);
    }

    public void finish(View view) {
        finish();
    }
}

4:运行效果
在这里插入图片描述
点击跳转
在这里插入图片描述
点击关闭程序,退出此程序
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘟嘟的程序员铲屎官

你的鼓励将是我最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值