文章目录

一、Activity概念

Activity是一种可以包含用户界面的组件,主要用于和用户进行交互。

一个应用程序中可以包含零个或多个Activity,但不包含任何Activity的应用程序很少见,谁也不想让自己的应用永远无法被用户看到吧?


二、Activity基本用法

2-1、创建Activity

右键app–>New–>Activity–>Empty Activity:

Android第三课-----Activity_启动模式


Android第三课-----Activity_android_02

  • Activity Name:Activity名称;
  • Generate a Layout File:勾选上表示自动为此Activity创建一个对应的布局文件;
  • Layout Name:Activity对应的布局文件名称
  • Launcher Activity:勾选上表示会自动将此Activity设置为当前项目的主Activity;

Android第三课-----Activity_android studio_03


2-2、Activity的onCreate()方法

在安卓开发中,项目中的任何Activity都应该重写onCreate()方法,,而目前FirstActivity中已经重写了这个方法,这是Android Studio自动帮我们完成的,代码如下所示:

Android第三课-----Activity_启动模式_04


2-3、创建和加载布局

创建布局
Android程序的设计讲究逻辑和视图分离,最好每一个Activity都能对应一个布局;

右键app/res/layout–>New–>Layout Resource File

Android第三课-----Activity_启动模式_05


加载布局

在Activity的onCreate()方法中添加如下代码就可以给该Activity加载一个布局:

setContentView(R.layout.activity_my)

Android第三课-----Activity_android_06


2-4、Activity注册

所有的Activity都要在AndroidManifest.xml中进行注册才能生效。

Activity的注册声明要放在​​<application>​​​标签内,并通过​​<activity>​​标签来对Activity进行注册。

Android第三课-----Activity_android studio_07

2-5、销毁Activity

通常情况下只要按一下手机的Back键就可以销毁当前的Activity了;

不过,如果你不想通过按键的方式,而是希望在程序中通过代码来销毁Activity,当然也可以。

Activity类提供了一个finish()方法,只需要调用一下这个方法就可以销毁当前的Activity了。

button1.setOnClickListener {
finish()
}

三、运行程序

启动安卓虚拟设备:点击工具栏的Device Manager:

Android第三课-----Activity_启动模式_08


点击Create device:

Android第三课-----Activity_android_09


点击三角形,启动设备:

Android第三课-----Activity_android_10


Android第三课-----Activity_启动模式_11

运行程序

Android第三课-----Activity_android_12


Android第三课-----Activity_android_13


当然也可以真机调试,用USB线将手机连接到电脑,电脑需要安装ADB驱动才行,然后再运行时选择真机设备即可;或者将APK发送到手机,安装一下也行:

Android第三课-----Activity_android studio_14


Android第三课-----Activity_启动模式_15


点击右侧底部弹出的提示框中的locate,即可弹出存放APK的文件夹;


四、Activity的生命周期

返回栈:Android是使用任务(task)来管理Activity的,一个任务就是一组存放在栈里的Activity的集合,这个栈也被称作返回栈(back stack)

栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的Activity,它就会在【返回栈】中入栈,并处于栈顶的位置。而每当我们按下Back键或调用finish()方法去销毁一个Activity时,处于栈顶的Activity就会出栈,前一个入栈的Activity就会重新处于栈顶的位置。

系统总是会显示处于栈顶的Activity给用户。

生命周期

  • onCreate():这个方法在Activity第一次被创建的时候调用;
  • onStart():这个方法在Activity由不可见变为可见的时候调用;
  • onResume():这个方法在Activity准备好喝用户进行交互的时候调用;
  • onPause():这个方法在系统准备去启动或者恢复另一个Activity的时候调用;
  • onStop():这个方法在Activity完全不可见的时候调用;
  • onDestroy():这个方法在Activity被销毁之前调用;
  • onRestart():这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了;

Android第三课-----Activity_加载_16


五、Activity的启动模式

standard模式
standard是Activity默认的启动模式,在不进行显式指定的情况下,所有Activity都会自动使用这种启动模式;

在standard模式下,每当启动一个新的Activity,它就会在返回栈中入栈,并处于栈顶的位置;

对于使用standard模式的Activity,系统不会在乎这个Activity是否已经在返回栈中存在,每次启动都会创建一个该Activity的新实例;


singleTop模式
当Activity的启动模式指定为singleTop,在启动Activity时如果发现返回栈的栈顶已经是该Activity,则认为可以直接使用它,不会再创建新的Activity实例。


singleTask模式
Activity的启动模式指定为singleTask,每次启动该Activity时,系统首先会在返回栈中检查是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并把在这个Activity之上的所有其他Activity统统出栈,如果没有发现就会创建一个新的Activity实例。


singleInstance模式
当Activity的启动模式指定为singleInstance,会启用一个新的返回栈来管理这个Activity。

假设我们的程序中有一个Activity是允许其他程序调用的,如果想实现其他程序和我们的程序可以共享这个Activity的实例,就可以使用singleInstance模式。

在这种模式下,会有一个单独的返回栈来管理这个Activity,不管是哪个应用程序来访问这个Activity,都共用的同一个返回栈,也就解决了共享Activity实例的问题。