Android四大组件之Activity深入解读生命周期

目录
  • 一、什么是Activity
  • 二、Activity之间的跳转
  • 三、Activity 生命周期
    • 3.1、Activity生命周期的基本状态
    • 3.2、Activity 生命周期的7个方法
    • 3.3、Activity 生命周期的三个循环

简介:在Android组件中最基本也是最为常见的四大组件:

  • Activity
  • Service服务
  • Content Provider内容提供者
  • BroadcastReceiver广播接收器

一、什么是Activity

Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。

Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件。

在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。

二、Activity之间的跳转

我们新建一个项目,创建两个Activity ,并在AndroidManifest.xml 中注册:

注意红框中的代码,这里代表着程序运行启动的第一个界面。

在Activity1 中的XML配置文章中添加一个按钮:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="activity跳转"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:onClick="onClick"
    tools:ignore="HardcodedText,OnClick,UsingOnClickInXml" />

在Activity1.java 文件中添加按钮的onClick 点击事件:

public void onClick(View view) {
    startActivity(new Intent(this, MainActivity2.class));
}

运行项目,点击activity跳转按钮,完成跳转功能

三、Activity 生命周期

3.1、Activity生命周期的基本状态

在android 中,Activity 生命周期可以分为四类:

Active/Running

一个新 Activity 启动入栈后,它显示在屏幕最前端,处理是处于栈的最顶端(Activity栈顶),此时它处于可见并可和用户交互的激活状态,叫做活动状态或者运行状态(active or running)。

Paused

当 Activity失去焦点, 被一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶,此时的状态叫做暂停状态(Paused)。此时它依然与窗口管理器保持连接,Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被强行终止掉。所以它仍然可见,但已经失去了焦点故不可与用户进行交互。

Stopped

如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被强行终止掉。

Killed

如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接终止它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。

3.2、Activity 生命周期的7个方法

参考官方给出的生命周期图可以知道activity的生命周期分为7个方法:

可运行下列代码进行验证:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
    super.onStart();
    System.out.println("MainActivity.onStart");
}
@Override
protected void onResume() {
    super.onResume();
    System.out.println("MainActivity.onResume");
}
@Override
protected void onPause() {
    super.onPause();
    System.out.println("MainActivity.onPause");
}
@Override
protected void onStop() {
    super.onStop();
    System.out.println("MainActivity.onStop");
}
@Override
protected void onDestroy() {
    super.onDestroy();
    System.out.println("MainActivity.onDestroy");
}
@Override
protected void onRestart() {
    super.onRestart();
    System.out.println("MainActivity.onRestart");
}

3.3、Activity 生命周期的三个循环

Activity有三个关键的循环:

  • 整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的全局状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。
  • 可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart()onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。
  • 前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。

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

(0)

相关推荐

  • Android应用内悬浮窗Activity的简单实现

    目录 前言 缩放方法 悬浮样式 点击穿透空白 移动悬浮窗 例子的完整代码 styles.xml layout activity 运行效果 小结 前言 悬浮窗是一种比较常见的需求.例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情. 本文给出一个简单的应用内悬浮窗实现.可缩小activity和还原大小.可悬浮在同一个app的其他activity上.使用TouchListener监听触摸事件,拖动悬浮窗. 缩放方法 缩放activity需要使用WindowManager.Layou

  • Android 进入Activity时如何禁止弹出软键盘输入法

    目录 禁止弹出软键盘输入法 stateHidden和stateAlwaysHidden的区别 代码中设置softInputMode 前言: 在开发中经常会遇到这样的问题,进入一个含Edittext的Activity后总是会自动弹出软件盘.但是有时候我们又不想让它弹出,因为影响美观,而且用户可能也会反感.最好的做法是刚进入时不让弹出,在用户输入的时候才让弹出,把主动权交个用户是对用户最大的尊重. 禁止弹出软键盘输入法 代码: <activity     android:name=".Main

  • Android activity动画不生效原因及解决方案总结

    activity动画方式 在AndroidMenifest中添加activity的动画属性windowAnimationStyle <item name="android:windowAnimationStyle">@style/anim_fade</item> 在activity代码中添加 overridePendingTransition overridePendingTransition(int enterAnim,int exitAnim) 问题汇总 一

  • Android Activity活动页面跳转与页面传值

    目录 概述 Intent 显示Intent启动 隐式Intent启动 启动其他程序 网页浏览 拨号界面 根据包名打开软件 根据类名打开界面 startActivityForResult 主页面 跳转界面 页面传值 Intent.putExtra 传值 借助 Bundle 传值 概述 Android开发少不了的就是页面之间的跳转,或者想要呼叫打开其他应用等 Intent Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以指明当前组件想要执行的运作,还可以在不同组件之间传递

  • Android四大组件之Activity详细介绍

    目录 理论概述 Activity的理解 Activity的定义 Activity的作用 类比Activity与Servlet Intent的理解 Intent的分类 Intent的使用 IntentFilter的理解 相关的API 设置点击监听 Activity中添加监听 layout中添加监听 设置长按监听 Activity的开发 开发流程 Activity的使用  总结 理论概述 Activity的理解 Activity的定义 Activity,字面翻译为活动,他是Android定义的四大应

  • Android中Activity组件实例介绍

    目录 Activity 概述 启动 Activity 的两种情况 关闭 Activity 总结 Activity 概述 在 Android 应用中,提供了 4 大基本组件,分别是 Activity.Service.BroadcastReceiver 和 ContentProvider.而 Activity 是 Android 应用最常见的组件之一.Activity 的中文意思是活动.在 Android 中,Activity 代表手机或者平板电脑中的一屏,它提供了和用户交互的可视化界面.在一个 A

  • Android Activity生命周期调用的理解

    目录 状态 启动模式 操作APP时生命周期调用 Activity异常生命周期 总结 状态 活动存放在一个叫返回栈的一个集合,当重新打开一个Activity时,它就会出现在栈顶.当要销毁该活动时,调用finish()或back,栈顶的活动就会出栈. 运行状态:一个活动处于栈顶时 暂停状态:不处于栈顶,但仍然可见.(失去焦点,非全屏或透明的activity放置在栈顶) 停止状态:不处于栈顶,也不可见,但还是会为它保留一些变量的相关数据.(被覆盖) 销毁状态:在栈中移除(killed状态) 启动模式

  • Android中Activity过渡动画的实例讲解

    目录 前言 分解动画 效果视频 解析 滑动动画 效果视频 解析 淡出动画 效果视频 解析 共享元素 共享单个元素 解析 共享多个元素 效果视频 全部代码 总结 前言 以前Activty之间得跳转非常生硬,自Android.5X后,Google对Activity的切换设计更多丰富的动画效果. Android 5.X提供了三种Transition类型,具体如下: ✧进入:一个进人的过渡动画决定Activity中的所有的视图怎么进入屏幕. ✧退出:一个退出的过渡动画决定-个Activity 中的所有视

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

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

  • Android四大组件之Activity深入解读生命周期

    目录 一.什么是Activity 二.Activity之间的跳转 三.Activity 生命周期 3.1.Activity生命周期的基本状态 3.2.Activity 生命周期的7个方法 3.3.Activity 生命周期的三个循环 简介:在Android组件中最基本也是最为常见的四大组件: Activity Service服务 Content Provider内容提供者 BroadcastReceiver广播接收器 一.什么是Activity Activity是一个应用程序组件,提供一个屏幕,

  • Android四大组件之Activity详解

    一.Activity的生命周期 首先,我们来了解一下Activity典型的生命周期 一个Activity从启动到结束会以如下顺序经历整个生命周期: onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory().包含了六个部分,还有一个onRestart()没有调用, 下面就来一一介绍 onCreate():当 Activity 第一次创建时会被调用.当 Activity 第一次创建时会被调用.这是生命周

  • Android编程四大组件之Activity用法实例分析

    本文实例讲述了Android编程四大组件之Activity用法.分享给大家供大家参考,具体如下: 这里详细介绍如何创建Activity.生命周期.内存管理.启动模式. 创建Activity 一.定义Activity 1. 定义Activity 定义类继承Activity 2.在AndroidManifest.xml的节点中声明<activity> 显式意图创建Activity三种方式方式 //第一种方式:构造函数,代码少 Intent intent1 =new Intent(this,NewA

  • Android12四大组件之Activity生命周期变化详解

    目录 前言 点击返回键Activity不在onDestroy 重新onBackPressed时的注意点 总结 前言 Android12 有很多令人惊喜的变化,比如基于 Material You 的全新 UI,基于 SplashScreen 的应用启动画面以及更安全的隐私设置等等,此外也有一些需要开发者注意的行为变化,比如这里介绍的 Activity 的 Lifecycle 上的变化 点击返回键Activity不在onDestroy Android 12 以前,当我们处于 Root Activit

  • Android四大组件之Service(服务)实例详解

    本文实例讲述了Android四大组件之服务用法.分享给大家供大家参考,具体如下: 很多情况下,一些与用户很少需要产生交互的应用程序,我们一般让它们在后台运行就行了,而且在它们运行期间我们仍然能运行其他的应用. 为了处理这种后台进程,Android引入了Service的概念.Service在Android中是一种长生命周期的组件,它不实现任何用户界面. 基本概念 Ÿ   Service是一种在后台运行,没有界面的组件,由其他组件调用开始. Ÿ   创建Service,定义类继承Service,An

  • Android四大组件之BroadcastReceiver详解

    BroadcastReceiver(广播接收器),在Android开发中,BroadcastReceiver的应用场景非常多,属于Android四大组件之一. Android 广播分为两个角色:广播发送者.广播接收者 一. 作用 用于监听 / 接收 应用发出的广播消息,并做出响应 应用场景: 不同组件之间通信(包括应用内 / 不同应用之间) 与 Android 系统在特定情况下的通信(如当电话呼入时.网络可用时) 多线程通信 二.实现原理 Android中的广播使用了设计模式中的观察者模式:基于

  • Android四大组件之Service服务详细讲解

    目录 一.Service是什么 二.Service 的启动方式 2.1.startService 显示启动 Service启动 Service 停止 2.2.bindService 绑定启动 使用bindService()方法启动Service unbindService 停止服务 三.Service 生命周期 startService启动的生命周期 bindService启动的生命周期 上一节:Activity 简介:在Android组件中最基本也是最为常见的四大组件: Activity Se

  • Android四大组件之广播BroadcastReceiver详解

    定义 BroadcastReceiver,"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播.在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度等等.Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现

  • Android编程中activity的完整生命周期实例详解

    本文实例分析了Android编程中activity的完整生命周期.分享给大家供大家参考,具体如下: android中 activity有自己的生命周期,对这些知识的学习可以帮助我们在今后写程序的时候,更好的理解其中遇到的一些错误.这篇文章很长,希望不要耽误大家的时间- 今天不会涉及太多关于activity栈的东西,主要说activity自身的生命周期 区分几个概念 1 Activity 官方解释为 "An Activity is an application component that pro

随机推荐