Android Activity的生命周期与启动模式全面解读

目录
  • Activity概述
  • Activity生命周期
    • 生命周期的调用顺序
    • 演示
  • Activity的启动模式
    • 启动模式的设置
    • standard(默认standard)
    • singleTop
    • singleTask
    • singleInstance

Activity概述

• Activity(活动)是Android应用程序中最基本的组成单位。
• Activity主要负责创建显示窗口,一个Activity对象通常就代表了一个单独的屏幕。
• Activity是用户唯一可以看得到的组件,用来与用户进行交互的。
• Activity是通过一个Activity栈来进行管理,当前显示的Activity被放到栈顶。

Activity生命周期

生命周期的调用顺序

一、启动activity,然后按返回键退出。
onCreate()->onStart()->onResume()
onPause()->onStop()->onDestory()
二、启动activity,按Home键显示桌面,再点程序图标进入应用程序。
onCreate()->onStart()->onResume()
onPause()->onStop()
onRestart()->onStart()->onResume()
三、启动activityA,再启动activityB
AonCreate()->AonStart()->AonResume()
AonPause()
BonCreate()->BonStart()->BonResume()

演示

package com.qingsu.yingguday06;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private  Button mBtIntent,mBtIntentOne,mBtIntentTwo,mBtIntentThree;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d("TAG","onCreate");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        mBtIntent.setOnClickListener(this);
    }

    private  void initView(){
        mBtIntent = findViewById(R.id.bt_intentmain);
    }
    @Override
    protected void onStart() {
        Log.d("TAG","onStart");
        super.onStart();
    }

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

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

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

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

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

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.bt_intentmain:
                startActivity(intent);;
                break;
            default:
                break;
        }
    }

}
package com.qingsu.yingguday06;

import androidx.appcompat.app.AppCompatActivity;

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

public class HomeActivity extends AppCompatActivity {

    Button mBtHome,mBtIntentB;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("TAG","BonCreate");
        setContentView(R.layout.activity_home);
        setTitle("页面B");
        mBtHome = findViewById(R.id.bt_intenthome);
        mBtIntentB = findViewById(R.id.bt_intentB);
        mBtHome.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(HomeActivity.this,MainActivity.class);
                startActivity(intent);
            }
        });
        mBtIntentB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(HomeActivity.this,HomeActivity.class);
                startActivity(intent);
            }
        });
    }
    @Override
    protected void onStart() {
        Log.d("TAG","BonStart");
        super.onStart();
    }

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

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

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

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

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

}

Activity的启动模式

standard(默认standard)、singleTop、singleTask、singleInstance

启动模式的设置

清单文件中在活动声明中加入launchMode属性 默认为standard方式

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

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

standard(默认standard)

一直入栈 一直创建新的Activity

singleTop

当前页面中创建当前页面不会新创建Activity

singleTask

当Activity存在则会将其置顶,Activity上面的栈则会被弹出!即Activity上面的Activity会销毁!

singleInstance

每一个Activity都是唯一的 当Activity存在不会新建新的Activity

到此这篇关于Android Activity的生命周期与启动模式全面解读的文章就介绍到这了,更多相关Android Activity 启动模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android入门教程之组件Activity的生命周期详解

    目录 返回栈 Activity 状态 1. 运行状态 2. 暂停状态 3. 停止状态 4. 销毁状态 Activity 的生存期 onCreate() onStart() onResume() onPause() onStop() onDestroy() onRestart() 完整生存期 可见生存期 前台生存期 Activity 回收处理 返回栈 Android 中的 Activity 是可以层叠的,我们每启动一个新的 Activity,就会覆盖在原有的 Activity 之上,然后点击 Ba

  • Android 启动模式FLAG_ACTIVITY_CLEAR_TOP案例详解

    四种启动模式 standard: 只要被启动就会创建一个新的 singleTop: 栈顶复用(当被启动的Activity处于Task栈顶时,可以复用,直接调用onNewIntent方法) singleTask: 栈中复用(被启动的Activity已经处于栈中,会将上边的Activity清除出栈,调用onNewIntent) singleInstance 全局单实例(应用场景:地图,Activity初始化需要大量资源) Intent的标志位FLAG Intent.FLAG_ACTIVITY_SIN

  • 浅析Activity启动模式

    前言 平常我们启动活动的时候就是直接startActivity或许并没有注意活动的启动模式,默认情况下都是以默认的启动模式启动.但启动模式有时候是比较重要的.例如一个活动你想他只启动一次不要有多个实例,那么你可能需要把他设置为singleTask模式.所以有必要了解一下这一些启动模式.同时要注意一下,启动模式≠启动方式,启动方式是指显示启动和隐式启动,不要混淆,显示启动和隐式启动后续我会有专门的文章讲解. 关于任务栈简介 要了解启动模式,首先要了解一下关于任务栈的概念.关于任务栈的实现原理等我在

  • Android Activity的4种启动模式图文介绍

    前言 记得第一次探讨Activity的启动模式,是在2017年8月份,那个时候对一年后走出校门的未来很是憧憬,时间真快,已经毕业四个月,工作和生活也都趋于稳定. 一.小前言 相信很多人和我一样,在初学Android甚至初入职场的时候不了解Acticity的启动模式,或者为了面试刷题刷到了,但并不理解启动模式的作用,以及如何正确的使用启动模式而不是所有的都是用默认模式. 二.Activity启动模式简介 Activity有四种启动模式,standard.singleTop.singleTask.s

  • Android非异常情况下的Activity生命周期分析

    Activity非异常情况下的生命周期是指,用户正常参与UI交互的情况下,Activity所经过的生命周期的改变:一般情况下,Activity会经过以下几个生命周期. 1.OnCreate(): 表示Activity正在创建,这个是生命周期的第一个方法,该方法只调用一次,在这个方法中,一般做变量初始化的操作,例如绑定一个Button控件的Id等. 2.onRestart(): 表示Activity正在重新启动,一般情况下,如果最前面的Activity从不可见状态变为可见状态时,onRestart

  • Android Activity的生命周期与启动模式全面解读

    目录 Activity概述 Activity生命周期 生命周期的调用顺序 演示 Activity的启动模式 启动模式的设置 standard(默认standard) singleTop singleTask singleInstance Activity概述 • Activity(活动)是Android应用程序中最基本的组成单位. • Activity主要负责创建显示窗口,一个Activity对象通常就代表了一个单独的屏幕. • Activity是用户唯一可以看得到的组件,用来与用户进行交互的.

  • Activity生命周期与启动模式图文解说

    Activity作为Android开发中最常用的一个组件,是Android开发人员必须熟悉且掌握的重要内容.同时Activity也是在面试中经常被问到的一个方向.因此,掌握Activity的重要性也不言而喻.希望能够对Activity有一个较为全面的介绍.如果在阅读过程中发现讲述的内容中有什么疏忽没有记录下来或者是错误的地方的话,欢迎在下方留言指出.下面开始进入正题吧: 预备知识:任务栈/回退栈** 栈是一种常见的数据结构,具有先进后出,后进先出的特点.从数据形式上来说,它可以用下面这一张图来表

  • Android Activity的生命周期与加载模式超详细图文解析

    目录 Activity的生命周期 Activity的加载模式 Activity的生命周期 Activity是安卓应用的重要组成单元之一,其对于安卓的作用类似于Servlet对于Web应用的作用. 整个Activity生命周期的图解如下 具体的生命周期可以总结成如下几个步骤 onCreate():Activity启动后第一个被调用的函数,常用来进行Activity的初始化,如创建View,绑定数据和恢复数据. onStart():当Activity显示在屏幕上时,函数被调用. onRestart(

  • Android Activity的生命周期详细介绍

    Android Activity的生命周期详细介绍 生命周期描述的是一个类从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法.在这个过程中,会针对不同的生命阶段调用不同的的方法. Activity是Android中四大组件之一,是最常见的应用组件,也是用的最多的组件,它能够提供一个界面与用户进行交互.Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:onCreate  onDestory  onStart  onStop  onRes

  • Android中Activity生命周期和启动模式详解

    Activity生命周期经典图解: 按键对生命周期的影响: BACK键: 当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法. 再次启动App时,会执行onCreate()->onStart()->onResume() HOME键: 当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择按HOME键,然后去打开音乐应用程序,而当我们按HOME的时候,A

  • Android开发之activity的生命周期详解

    本文实例讲述了Android activity的生命周期.分享给大家供大家参考,具体如下: activity类处于android.app包中,继承体系如下: 1.Java.lang.Object 2.android.content.Context 3.android.app.ApplicationContext 4.android.app.Activity activity是单独的,用于处理用户操作.几乎所有的activity都要和用户打交道,所以activity类创建了一个窗口,开发人员可以通

  • Android开发中Activity的生命周期及加载模式详解

    本文给大家介绍Activity的生命周期,如果大家学习过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周期莫过于生老病死,花儿的生命周期就是花开花谢了.在Android中Activity的生命周期莫过于Activity的创建到消亡的过程了.本篇博客就会介绍Activity生命周期中的不同阶段,通过实例的形式来窥探一下Activity的生命周期.搞明白Activity的生命周期是至关重要的,因为只有搞明白每

  • 深入解读Android开发中Activity的生命周期

    什么是Activity        首先,Activity是Android系统中的四大组件之一,可以用于显示View.Activity是一个与用记交互的系统模块,几乎所有的Activity都是和用户进行交互的,但是如果这样就能说Activity主要是用来显示View就不太正确了. 在深入了解Activity之前,我们先要知道一下MVC设计模式,在JAVAEE 中MVC设计模式已经很经典了,而且分的也比较清晰了,但是在Android中,好多人对MVC在Android开发中的应用不是很清楚,下面我

  • Android中Activity的生命周期探讨

    1.完整生命周期 上图是Android Activity的生命周期图,其中Resumed.Paused.Stopped状态是静态的,这三个状态下的Activity存在时间较长. (1)Resumed:在此状态时,用户可以与Activity进行交互,Activity在最前端 (2)Paused:在此状态时,Activity被另外一个Activity遮盖,此Activity不可接受用户输入信息.另外一个Activity来到最前面,半透明的,但并不会覆盖整个屏幕. (3)Stopped:在此状态时,A

随机推荐