Activity入门—Activity生命周期及三种状态+案例[通俗易懂]

Activity入门—Activity生命周期及三种状态+案例[通俗易懂]生命周期就是一个对象从创建到销毁的过程,每个对象都有自己的生命周期。Activity生命周期分为三种状态。运行状态,停止状态,暂停状态。一.运行状态当activity在最前端时,它是可见的,有焦点的,可以用来处理用户的常见的操作。如:点击,双击,长按事件等。系统最不愿回收的就是出于此种状态的活动,这会带来非常差的用户体验。二.暂停状态activity依然可见,但它不再拥有焦点,即用户对它的操

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

生命周期就是一个对象从创建到销毁的过程,每个对象都有自己的生命周期。Activity生命周期分为三种状态。运行状态,停止状态,暂停状态。

一.运行状态 当activity在最前端时,它是可见的,有焦点的,可以用来处理用户的常见的操作。如:点击,双击,长按事件等。系统最不愿回收的就是出于此种状态的活动,这会带来非常差的用户体验。

二.暂停状态 activity依然可见,但它不再拥有焦点,即用户对它的操作没有实际意义。

三.停止状态 activity完全不可见,但仍然保留着当前状态和成员信息。如果当系统内存不足,其他地方需要内存时,它会被系统回收。

生命周期流程图

七种生命周期的用法

1 onCreate( )这是必须要写的方法,此方中主要是对activity进行ui的加载

2 onstart( ) 在onCreate( )方法之后创建 用来显示界面此时还不可以进行用户的交互

3 onResume( )在onstart( )方法中后创建 可以与用户进行交互 此时进入activity的第一个状态 Resumed状态即运行状态。当paused被覆盖返回时仍会调用该状态

4 onpause( ) 当用户进入透明的窗口时会被调用此时可以看见但是没焦点,当因内存不够会被kill掉此时会进入onResume状态

5 onStop( )当activity被整个覆盖时进入该状态

6 onDestroy( )在activity被销毁前所调用的最后一个方法,当进程终止时会出现这种情况

7 onRestart( ) 当activity从停止状态重新启动时调用。其后调用onResume( )

案例

通过两个activity的交互进一步理解生命周期各阶段的用法

分别在两个activity中调用生命周期方法,观察运行时的输出变化

First Activity中:

package cn.edu.bzu.activitydemo;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class FirstActivity extends AppCompatActivity { 
   
   private Button btnClick;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        Log.d("FirstActivity","onCreate");
        btnClick=(Button)findViewById(R.id.button);
        btnClick.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(  FirstActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.d("FirstActivity","onStart");
    }

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

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

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

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

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

SecongActivity中

package cn.edu.bzu.activitydemo;

import
android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class SecondActivity extends AppCompatActivity { 
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.d("SecondActivity","onStart");

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

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

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

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

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

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

xml文件中的布局界面
这里写图片描述这里写图片描述

运行结果展示

1.首先点击first_activity中的button按钮,会在Android Monitors的log cat界面看到firstactivity的执行情况,通过生命周期图可以看出经历了生命周期的前三个方法。
这里写图片描述
2继续点击虚拟机的按钮,看到firstactivity调用了onpause方法暂停还是处于可见状态,此时,secondactivity经历前三个方法,完全可交互。此时2已经把1完全覆盖住了,firstactivity变得不可见。
这里写图片描述
3这样就通过案例实现了生命周期部分方法的调用。可重复操作进行验证。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170697.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pytest(8)parametrize参数化「建议收藏」

    Pytest(8)parametrize参数化「建议收藏」前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

    2022年7月29日
  • lvm扩容磁盘空间[通俗易懂]

    lvm扩容磁盘空间[通俗易懂]1lvm的基本概念物理卷pv:指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数卷组vg:类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)逻辑卷lv:类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等2LVM能作什么?答:linux的系统..

    2022年6月20日
  • BOM的介绍_BOM定义

    BOM的介绍_BOM定义BOM的概念BOM(BrowserObjectModel)是指浏览器对象模型。浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口

    2022年8月5日
  • Maximum execution time of 30 seconds exceeded解决办法

    Maximum execution time of 30 seconds exceeded解决办法

    2021年10月16日
  • java clone()_java throwable

    java clone()_java throwable克隆是一种基本的编程模式。事实上,Java在很多方面可能实现得很差,但这丝毫没有减少克隆的必要性。而且,很容易实现克隆,无论你希望它如何工作,浅层的,深层的,混合的,无论什么。如果愿意的话,甚至可以为函数使用clone名称,而不实现Cloneable。假设我有类A、B和C,其中B和C是从A派生的。如果我有一个A类型的对象列表,如下所示:ArrayListlist1;ArrayListlist2…

    2022年10月10日
  • 设计模式——门面模式「建议收藏」

    设计模式——门面模式「建议收藏」今天我们继续来学习前面没有学完的结构型设计模式中的一种:门面模式。门面模式也是一种不太常用的设计模式。所以,我们今天依旧是了解为主,暂时不去深入的学习。概述门面模式:(FacadeDesignPattern)门面模式也叫外观模式,门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。门面模式原理和实现也比较简单,应用场景也比较明确,主要在接口设计方面使用。何时使用:解决易用性问题。解决性能问题。解决分布式事务问题。UML类图:角色组成:门面角色:客户端调用这个

    2022年11月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号