九、Activity

119 阅读3分钟

Activity是Android的四大组件之一,Actiity是一种能够显示用户界面的组件,用户通过和Activity交互完成相关操作。 一个应用中可以包含0个或多个 Activity,但不包含任何 Activity 的应用程序是无法被用户看见的。

  1. Activity用于显示用户界面,用户通过Activity交互完成相关操作
  2. 一个App允许有多个Activity

一、Activity生命周期

图片.png

Activity 类中定义了7个回调方法,覆盖了 Actiity 生命周期的每一个环节,下面就来介绍一下这7个方法。

  • onCreate()

该方法会在 Activity 第一次创建时进行调用,在这个方法中通常会做 Activity 初始化相关的操作,例如:加载布局、绑定事件等。

  • onStart()

这个方法会在 Activity 由不可见变为可见的时候调用,但是还不能和用户进行交互。

  • onResume()

表示Activity已经启动完成,进入到了前台,可以同用户进行交互了,

  • onPause()

这个方法在系统准备去启动另一个 Activity 的时候调用。可以在这里释放系统资源,动画的停止,不宜在此做耗时操作。

  • onStop()

当Activity不可见的时候回调此方法。需要在这里释放全部用户使用不到的资源。可以做较重量级的工作,如对注册广播的解注册,对一些状态数据的存储,此时Activity还不会被销毁掉,而是保持在内存中,但随时都会被回收。通常发生在启动另一个Activity或切换到后台时。

  • onDestroy()

Activity即将被销毁。此时必须主动释放掉所有占用的资源。

  • onRestart() 这个方法在 Activity 由停止状态变为运行状态之前调用,也就是 Activity 被重新启动了(APP切到后台会进入onStop(),再切换到前台时会触发onRestart())方法)

二、Activity创建与AndroidManifest.xml注册

四大组件需要在AndroidManifest文件中配置否则无法使用,类似Activity无法启动。

一般情况下: 在新建一个activity后,为了使intent可以调用此活动,我们要在androidManifest.xml文件中添加一个标签,标签的一般格式如下:

图片.png

  • android:name是对应Activity的类名称
  • android:label是Activity标题栏显示的内容.现已不推荐使用
  • 是意图过滤器.常用语隐式跳转
  • 是动作名称,是指intent要执行的动作
  • 是过滤器的类别 一般情况下,每个中都要显示指定一个默认的类别名称。即 category android:name android.intent.category.DEFAULT

但是上面的代码中没有指定默认类别名称,这是一个例外情况,因为其 中的是"android,.intent,action,MAIN",意思是这个Activity是应用程序的入口点,这种情况不可以不加默认类别名。

三、Activity启动传参与返回数据

在Android中我们可以通过下面两种方式来启动一个新的Activity,注意这里是怎么启动,分为显示启动和隐式启动!

  • 1.显式启动:通过包名来启动,写法如下: 最常见的:startActivity

图片.png

期待从目标页获取数据:startActivityForResult---->比如启动相册获取图片

图片.png

  • 2、隐式启动

隐式 Intent 要比显示 Intent 含蓄的多,他并不明确指定要启动哪个 Activity,而是通过指定 action 和category 的信息,让系统去分析这个Intent,并找出合适的 Activity 去启动。

图片.png

系统给我们提供的一些常见的Activtiy

图片.png

图片.png