[Android]知识总结一:Activity

  1.1 首先是Activity的生命周期

  • onCreate, onStart, onRestart, onResume, onPause, onStop, onDestory 这7个回调可以说明Activity的生命周期模型。

  直接上google给的生命周期图来说明:

  

总结以下的几点:

  1. Activity从创建至用户可见并能够交互,onCreate->onStart->onResume; 其中Created和Started状态属于瞬时状态,只有Resumed状态属于长时间状态。
  2. Activity被遮挡,无论是部分遮挡还是完全不可见,必会调用onPause, 而进入后台的activity有可能因为内存不足等原因被系统杀掉回收,所以如果有需要进行数据保留的情形,请一定在onPause或者onSaveInstance中进行。onStop只有在完全被遮挡时才会被回调。
  3. 当ActivityA启动ActivityB时,其时序图如下:

  

  

  从图中可以看出,当ActivityA处于Resumed状态时,发送了startActivity的消息给ActivityB, 我们可以看出时序为:

  ActivityA: onCreate->onStart->onResume->onPause                                                          ->onStop

  ActivityB:                                                                ->onCreate->onStart->onResume

d. 启动Activity是通过intent来传递消息的,intent中不光是可以携带参数,也可以设置不同的启动方式,如:

setAction(intent, action);

setClass(context, class);

setComponent(componentName);

setClassName(package, classname);

1.2   Activity和Task Record的关系

简单的总结一下:

  1. 首先Task Record是用来记录Activity的调用栈情况;栈是一种通用数据结构,先进后出;
  2. 一般而言,一个应用程序如果不特殊指明其对应task, 那么所有的activity的task即是以应用的packagename命名的task。
  3. 可以通过标签android:taskAffinity来指定activity所属的task;
  4. Activity具有4种android:launchMode选项,分别为”standard”, “singleTop”, “singleTask”, “singleInstance”, 其中standard和singleInstance最容易理解,

    Standard:当Activity在被启动时,无论什么情况都会产生一个新的实例加入到栈中记录。

    singleInstance: 表明该Activity在任何时候只有一个实例,并且该实例是单独存在一个栈中记录的,也就是说此栈只存在这一个activity的实例。

    singleTop: 若该Activity已经在栈顶位置时,启动该Activity时,是不会产生实例,而是会触发既有的activity的onNewIntent回调。若该Activity不在栈顶,在行为和standard一致。

    singleTask: 拥有此标签的Activity,也只能产生一个实例,所以当栈中已经存在该实例的话,那么再次启动此Activity时,会将已有栈中的该Activity的实例之上的所有Activity都进行出战操作,并且触发onNewIntent回调。

5.查看task情况,可以使用以下的命令:

adb shell dumpsys activity

  

因个人知识和能力所限,如有错误请留言,欢迎讨论,共同进步。

时间: 2024-10-30 06:14:51

[Android]知识总结一:Activity的相关文章

android学习二(Activity)

前面我简单的介绍了android的一些基础知识,当作热身吧,接下来接触android的四大组件的activity活动. 1.活动Activity是是一种保护用户界面的组件,主要用于和用户进行交互. 活动的基本使用方法 1.创建一个项目项目名为ActivityTest.使用手动创建的方式. 选择file->android project填写好项目名和包名等next,不要勾选craete activity这个选项,最后finish 2.创建好包.创建一个类FirstActivity,并继承Activ

android学习四(Activity的生命周期)

要学好活动(Activity),就必须要了解android中Activity的声明周期,灵活的使用生命周期,可以开发出更好的程序,在android中是使用任务来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈.栈的特性是后进先出,在默认的情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置.而每当我们按下Back键或调用finish方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置.系统总是会显示处于栈顶的活动给用户

Android中突发情况Activity数据的保存和恢复

Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需要我们使用正确的方式进行保存或恢复. 突发情况都有哪些? 因为本文讨论的是当一些突发情况的出现时,对数据的保存和恢复.所以现在总结一下突发情况应该都有哪些? 点击back键 点击锁屏键 点击home键 其他APP进入前台 启动了另一个Activity 屏幕方向旋转 APP被Kill 当这些突发情况发

Android知识梳理之屏幕适配全攻略

 引言: 我相信Android碎片化问题是让所有的Android开发者都比较头疼的问题.尤其是屏幕适配这一块儿.想要自己的app在不同的设备上面都有一个比较好的显示效果.就必须做好相应的屏幕适配.本文是结合网上的相关知识总结.官方文档结合自己的一些理解来进行阐述的.如有不恰当的地方,欢迎斧正.共同学习. 转载请标明出处:http://blog.csdn.net/unreliable_narrator/article/details/51315776 我们先来了解两个概念:屏幕尺寸和屏幕的分辨率:

Android 跨进程启动Activity黑屏(白屏)的三种解决方案

原文链接:http://www.cnblogs.com/feidu/p/8057012.html 当Android跨进程启动Activity时,过程界面很黑屏(白屏)短暂时间(几百毫秒?).当然从桌面Lunacher启动一个App时也会出现相同情况,那是因为App冷启动也属于跨进程启动Activity.为什么没会出现这种情况呢?真正元凶就是Android创建进程需要准备很多资源,它是一个耗时的操作. 黑屏(白屏)原因 当A进程启动B进程中的一个Activity时,Android系统会先有zygo

Android开发之入口Activity

原文:Android开发之入口Activity Android开发之入口Activity Adnroid App是如何确定入口Activity的? 难道就因为class的类名叫MainActivity,布局文件叫activity_main.xml? 如果这样认为,就大错特错了. 之所以能够确定入口Activity,是因为在应用的清单文件中有所配置,系统会根据应用的清单文件(AndroidManifest.xml)来确立. 如何确立,标志是什么? 我们来看一下清单文件,便一目了然: 对了,系统能够

Android 第六课——Activity高级

?Activity 生命周期: 生命周期7个方法的调用时机: 1)onCreate:第一次创建这个Activity时,也就是系统中没有缓存当前的Activity时,这个方法首先被调用.调用之后这个Activity就会被压入所谓的Android Task栈中缓存起来,下次用时出栈就可以.所以,为了更加节约资源,我们一般把Activity所对应的layout中拥有的组件首先使用private作为这个Activity的私有成员,然后在onCreate方法中初始化,这样只要在Activity创建的时候,

【Android】多个Activity之间利用bundle传递数值

安卓中的Activity相当于vb,mfc中的窗体,在多个Activity之间传递数据是一个相当核心的功能.下面举个例子来说明这个问题. 一.基本目标 用户在两个输入框中输入用户名.密码之后,跳到另一个Activity当中,显示其输入的内容, 然后这两个Activity能够轻松跳转. 二.制作过程 1.首先MainActivity的登录界面是沿用了<[Android]利用表格布局,Android中xml文件与java的交互制作登录界面>(点击打开链接)的布局,其布局文件activity_mai

android系统启动框架、Activity界面显示过程详解

一.Android系统框架 android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层.盗图如下: 具体每层的功能介绍如下: (1) 应用程序层 该层提供一些核心应用程序包,例如电子邮件.短信.日历.地图.浏览器和联系人管理等.同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等.友好共处. (2)应用程序框架层 该层是Android应