Activity 简介

 在讲解Activity之前,我先说一下为什么会有Activity这个组件。移动应用体验与桌面体验的不同之处在于,用户与应用的互动并不总是在同一位置开始,而是经常以不确定的方式开始。例如,如果你从主屏幕打开电子邮件应用,可能会看到电子邮件列表,如果你通过社交媒体应用启动电子邮件应用,则可能会直接进入电子邮件应用的邮件撰写界面。Activity 充当了应用与用户互动的入口点,并提供窗口供应用在其中绘制界面。

 Activity 类是 Android 应用的关键组件,而 Activity 的启动和组合方式则是Android 平台应用模型的基本组成部分。如果你学习过JAVA的话应该知道在编程范式中,应用是通过 main() 方法启动的,而 Android 系统与此不同,它会调用与其生命周期特定阶段相对应的特定回调方法来启动 Activity 实例中的代码。

 Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。

Activity 类提供六个核心回调:onCreate()onStart()onResume()onPause()onStop() 和 onDestroy()。当 Activity 进入新状态时,系统会调用每个回调。图1是从安卓的说明文档上copy下来的,一定要记下来!!!

一个应用通常由多个彼此松散联系的 Activity 组成。 一般会指定应用中的某个 Activity 为“主”Activity,即首次启动应用时呈现给用户的那个 Activity。 而且每个 Activity 均可启动另一个 Activity,以便执行不同的操作。 每次新 Activity 启动时,前一 Activity 便会停止,但系统会在堆栈(“返回栈”)中保留该 Activity。 当新 Activity 启动时,系统会将其推送到返回栈上,并取得用户焦点。 返回栈遵循基本的“后进先出”堆栈机制,因此,当用户完成当前 Activity 并按“返回”按钮时,系统会从堆栈中将其弹出(并销毁),然后恢复前一 Activity。

当一个 Activity 因某个新 Activity 启动而停止时,系统会通过该 Activity 的生命周期回调方法通知其这一状态变化。Activity 因状态变化—系统是创建 Activity、停止 Activity、恢复 Activity 还是销毁 Activity— 而收到的回调方法可能有若干种,每一种回调都会提供执行与该状态变化相应的特定操作的机会。 例如,停止时你的 Activity 应释放任何大型对象,例如网络或数据库连接。 当 Activity 恢复时,你可以重新获取所需资源,并恢复执行中断的操作。 这些状态转变都是 Activity 生命周期的一部分。

本文的其余部分阐述有关如何创建和使用 Activity 的基础知识,以便你正确管理各种 Activity 状态之间的转变。

  • 声明Activity

要声明 Activity,请打开AndroidManifest.xml文件,并添加 <activity> 元素作为 <application> 元素的子元素。

   <manifest ... ><application ... ><activity android:name=".ExampleActivity" />...</application ... >...</manifest >
  • 声明 intent 过滤器

Intent 过滤器是 Android 平台的一项非常强大的功能。借助这项功能,你不但可以根据显式请求启动 Activity,还可以根据隐式请求启动 Activity。

    <activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"><intent-filter><action android:name="android.intent.action.SEND" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="text/plain" /></intent-filter></activity>

在此示例中,<action> 元素指定该 Activity 会发送数据。将 <category> 元素声明为 DEFAULT 可使 Activity 能够接收启动请求。<data> 元素指定此 Activity 可以发送的数据类型。以下代码段展示了如何调用上述 Activity:

    // Create the text message with a stringIntent sendIntent = new Intent();sendIntent.setAction(Intent.ACTION_SEND);sendIntent.setType("text/plain");sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);// Start the activitystartActivity(sendIntent);
  • 声明权限

你可以使用清单的 <activity> 标记来控制哪些应用可以启动某个 Activity。父 Activity 和子 Activity 必须在其清单中具有相同的权限,前者才能启动后者。如果你为父 Activity 声明了 <uses-permission> 元素,则每个子 Activity 都必须具有匹配的 <uses-permission>元素。

管理 Activity 生命周期

一个 Activity 在其生命周期中会经历多种状态。下面将介绍这些回调。

onCreate()

你必须实现此回调,它会在系统创建你的 Activity 时触发。你的实现应该初始化 Activity 的基本组件:例如,你的应用应该在此处创建视图并将数据绑定到列表。最重要的是,你必须在此处调用 setContentView() 来定义 Activity 界面的布局。

onCreate() 完成后,下一个回调将是 onStart()

onStart()

onCreate() 退出后,Activity 将进入“已启动”状态,并对用户可见。此回调包含 Activity 进入前台与用户进行互动之前的最后准备工作。

onResume()

系统会在 Activity 开始与用户互动之前调用此回调。此时,该 Activity 位于 Activity 堆栈的顶部,并会捕获所有用户输入。应用的大部分核心功能都是在 onResume() 方法中实现的。

onResume() 回调后面总是跟着 onPause() 回调。

onPause()

当 Activity 失去焦点并进入“已暂停”状态时,系统就会调用 onPause()。例如,当用户点按“返回”或“最近使用的应用”按钮时,就会出现此状态。当系统为你的 Activity 调用 onPause() 时,从技术上来说,这意味着你的 Activity 仍然部分可见,但大多数情况下,这表明用户正在离开该 Activity,该 Activity 很快将进入“已停止”或“已恢复”状态。

如果用户希望界面继续更新,则处于“已暂停”状态的 Activity 也可以继续更新界面。例如,显示导航地图屏幕或播放媒体播放器的 Activity 就属于此类 Activity。即使此类 Activity 失去了焦点,用户仍希望其界面继续更新。

你不应使用 onPause() 来保存应用或用户数据、进行网络呼叫或执行数据库事务。

onPause() 执行完毕后,下一个回调为 onStop()或 onResume(),具体取决于 Activity 进入“已暂停”状态后发生的情况。

onStop()

当 Activity 对用户不再可见时,系统会调用 onStop()。出现这种情况的原因可能是 Activity 被销毁,新的 Activity 启动,或者现有的 Activity 正在进入“已恢复”状态并覆盖了已停止的 Activity。在所有这些情况下,停止的 Activity 都将完全不再可见。

系统调用的下一个回调将是 onRestart()(如果 Activity 重新与用户互动)或者 onDestroy()(如果 Activity 彻底终止)。

onRestart()

当处于“已停止”状态的 Activity 即将重启时,系统就会调用此回调。onRestart() 会从 Activity 停止时的状态恢复 Activity。

此回调后面总是跟着 onStart()

onDestroy()

系统会在销毁 Activity 之前调用此回调。

此回调是 Activity 接收的最后一个回调。通常,实现 onDestroy() 是为了确保在销毁 Activity 或包含该 Activity 的进程时释放该 Activity 的所有资源。

关于Activity生命周期就简单说到这里,之后会更新一下各种状态下Activity的各个方法的使用。

整理不易,如果你感觉还没有可以到打赏的程度,就请留个赞吧。我会继续努力的,谢谢。

Android的Activity之生命周期相关推荐

  1. android 英语论文,Android中Activity的生命周期英语论文+译文.doc

    Android中Activity的生命周期英语论文译文 北方民族大学 英文文献翻译 论文题目: Android环境及Activity介绍 院(部)名 称: 计算机科学与工程学院 学 生 姓 名: 陈 ...

  2. Android开发---Activity的生命周期

    在Android开发中,第一步学习的应该是最基础的东西,即Activity的声明周期,相信Activity对于从事Android开发的朋友都很熟悉,这里作者不多做解释.Android的生命周期可以用如 ...

  3. Android 中 Activity 的生命周期

    接触 Android 有一段时间了,但是今天才去看 Activity 的生命周期,着实是因为在项目中用到了,需要去关闭释放一些数据. 以下内容来自网络,说的很直白,我就不用整理了 onCreate() ...

  4. Android 之 Activity 的生命周期(PS:文章多图,流量警告)

    前言: 本篇文章纯粹个人见解,如有错误或不到位的地方,请指出,多谢! 一般都会直接上官方生命周期图,我就不,皮一下好开心. 我先上我的效果图: 从我的效果图看出,一般的打开关闭操作.我也在每个生命周期 ...

  5. 详解android之activity的生命周期

    android中用到最多的就是activity,它也是android的四大组件之一,开发过程中也是最常用到的组件,所以我们有必要去掌握它在程序运行的生命周期是怎么回事 在了解activity的生命周期 ...

  6. Android下Activity的生命周期

    Activity的生命周期如上图所示.当系统调用一个活动时,每个回调函数依次调用. 转载于:https://www.cnblogs.com/hainange/archive/2013/04/25/61 ...

  7. Android的activity的生命周期

    activity的生命周期有四个重要的状态:活动,暂停,停止,销毁 基本的方法有:onCreate.onStart.onResume.onPause.onStop.onDestory 最经常使用的方法 ...

  8. 【android】android中activity的生命周期

    activity生命周期: 实例代码: 1 public class DemoActivity extends Activity { 2 3 //1.activity第一次被创建的时候,执行 4 @O ...

  9. android之Activity的生命周期

    Activity是android中的四大组件(其他三个ContentProvider,Service, Broadcast(BroadcastReceiver)). 在安卓中代表的是程序的一个页面.为 ...

最新文章

  1. android 单个模块编译的方法
  2. Matlab 牛顿方法求解方程
  3. Mybatis:基于注解形式,传入List,返回List实体
  4. 【+】Linux Socket编程
  5. 鹰角网络全球海量数据,一键轻松统一存储与处理
  6. [常微分方程的数值解法系列一] 常微分方程
  7. ios12完美深色模式插件_越狱插件(三)
  8. jquery衬衣产品内容详情页
  9. java代码防查重工具_代码查重工具sim
  10. python猜词游戏演讲ppt_随机猜词游戏
  11. 代码分析之numpy.array
  12. python ppt 图片_python ppt 转 pdf 图片
  13. html 图片放大缩小轮播,jQuery左右滚动支持图片放大缩略图图片轮播代码分享
  14. 【深度学习】关于EMA:指数移动平均
  15. win10家庭版安装Hyper-v
  16. 修复 Rancher 2.5.x 内部证书过期导致无法启动的顽疾
  17. css渐变效果的实现
  18. KeyShot宝石效果材质
  19. 【程序】STM32H743ZI用SDMMC2驱动88W8801 WiFi模块
  20. 校招面试真题 | 实习生和应届生有什么区别?

热门文章

  1. Android: How to Capture Screen in Gingerbread(2.3中实现截屏)
  2. 数据库建表-- 一对多/多对一/一对一/多对多 关系
  3. (区块链溯源)基于Hyperledger Fabric 的农产品区块链溯源方法
  4. 耳机声音一边大一边小
  5. cf不能全屏win7的解决方法_怎么解决win7电脑没声音 win7电脑没声音解决方法介绍【详解】...
  6. 盛世传承“富三代”品牌让你的家族基业长青
  7. 6本豆瓣高分书,国内外的技术大牛都在看!
  8. PT_二维随机变量:正态分布的可加性/一维随机变量函数与正态分布
  9. 半夜开piao竟然被罚
  10. UNIX环境高级编程——1.UNIX基础知识