作者:半身风雪
简介:在Android组件中最基本也是最为常见的四大组件:

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

四大组件之 Activity

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

一、什么是Activity

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

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

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

二、Activity之间的跳转

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

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

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

<Buttonandroid: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 生命周期可以分为四类:

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

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

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

  4. 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有三个关键的循环:

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

【Android 四大组件之Activity】一文吃透Activity 生命周期相关推荐

  1. Android四大组件完全解析(一)---Activity

    本文参考\android\android\frameworks\base\core\java\android\app\Activity.java文件中的类注释,以及android/frameworks ...

  2. Android 四大组件之——Acitivity(三) 深入了解Activity的启动流程

    上图为整个Activity的启动流程 接下来我们大概分析 在我们的Android系统中,应用程序是由Launcher这个应用启动起来的.当我们安装好应用程序之后,就会在Launcher的界面上生成一个 ...

  3. android四大组件的作用简书,Android四大组件是什么

    Android四大组件是:活动.服务.广播接收器.内容提供商.它们的英文名称是ACTIVITY.SERVICE.BroadcastReceiver.Content Provider.四个组件分别起到不 ...

  4. Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一.了解四大基本组件 Activity ...

  5. 重温Android四大组件(一)—Activity的生命周期

    前言 四大组件对于Android开发者是老生常谈的知识了,相信每个Android开发者对四大组件都已经很熟悉了.但是四大组件作为Android应用的基础,作为开发者不仅要熟悉而且要烂熟于心. 这里以& ...

  6. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  7. Android四大组件---Activity

    1:前言 上一遍讲解了四大组件的广播----BroadcastReceiver,今天,我来解释一下四大组件最常用的activity. 2:概述 Activity 作为与用户交互的一个窗口,是使用非常频 ...

  8. android的四大组件及使用场景,Android/四大组件/Activity.md · BoraxZYF/AndroidInterview - Gitee.com...

    ## 四大组件 ## Activity ### Activity 的四种启动模式及使用场景 - standard 标准模式,Activity 的默认启动模式.每次启动一个 Activity 时都会创建 ...

  9. 第六课-Android四大组件之Activity

    Activity是Android四大组件之一,它是个控制类,主要控制界面的加载显示,用户交互处理,数据的获取,数据的传送等.在它的onCreate方法中的setContentView方法就是来加载一个 ...

  10. Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)

    什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...

最新文章

  1. linux子系统使用rstudio,linux 下安装Rstudio
  2. openresty+mysql+乱码_openresty记录响应body乱码问题
  3. python 数据库驱动开发实例_Python驱动概述
  4. 如何防止mysql数据库被勒索
  5. laydate报Uncaught TypeError: Cannot read property 'appendChild' of undefined
  6. java day39【HTTP协议:响应消息 、Response对象 、ServletContext对象】
  7. 排序算法之——快速排序分析
  8. 进一步理解VC中的句柄
  9. 2022考研数据结构_1 绪论
  10. 远程访问内网监控摄像头【无公网IP】
  11. 黑客们会用到哪些Python技术?
  12. Arduino-ESP8266库接口:Ticker.h
  13. Xilinx SDx尝鲜之下载安装
  14. Android TV开发--HDMI播放器
  15. 执FPGA异构计算之耳
  16. XP中服务与后门技术
  17. HTML5的input框placeholder提示文字默认为灰色,修改
  18. libnice linux编译流程
  19. 蜂鸟E203学习笔记(五)——执行
  20. CCNP350-401学习笔记(1-50题)

热门文章

  1. 不能转正的开发实习,要不要去?
  2. 工作两年,Java社招岗位,阿里,头条等多家大厂面经出炉
  3. 怎么修改mysql的默认端口号
  4. 常用的四种sql增删改查
  5. Android NDK编译libjpeg-turbo压缩图片
  6. 中级经济师 |《经济基础知识》学习思维导图
  7. python 猜字游戏外挂
  8. 创建型模式:单例模式
  9. matlab读取二进制文件字符串,matlab读取内容为二进制的TXT文件
  10. 解决bat批处理输出乱码的问题