一、Activity的生命周期

Activity生命周期是一系列方法调用。熟悉各个方法调用时间,我们在创建activity就能根据具体实现选择合适的方法覆盖。

1、  覆盖Activity的生命周期方法

常用的生命周期有 onCreate、onStart、onResume、onPostResume、onPause、onStop、onDestroy.

为了观察调用过程,把上述方法覆盖,在里面使用日志工具输出方法名。

2、  结果分析

activity被创建调用的方法。onStart调用完后界面显示。所以加载界面应该在onResume之前。

activity不可见调用的方法。不可见的情况包括界面切换、锁屏、有电话进来。不包括下滑或上滑显示的通知栏界面。

activity再次可见调用的方法。

activity销毁,在不可见的基础上多了OnDestroy的调用。

3、  其他情况

#所有的方法调用在同一个线程(UI线程)里面,所以某个方法长时间执行可能导致生命周期不成立,整个生命周期是事件处理,前面的事还没处理完,后面自然就不会处理。

#方法调用有缓存,一个操作第二次执行,若数据没改变,将直接使用第一次的结果。

二、Activity的跳转

Activity之间的跳转切换通过intent,在intent中设置了目标Activity就是显示。对应的隐式跳转是在intent中设置匹配参数,系统用参数与众多Activity匹配,然后决定跳转到某个界面。根据是否带有返回结果又分普通的和有返回结果的跳转。

1、  直接的界面跳转

在当前Activity(MainActivity)之中用Intent设置目标Activity(ScStandardActivity),可以用Intent传递少量的数据。调用startActivity。

在目标Activity通过getIntent获得intent,得到传入的数据。

2、  带有返回结果的跳转

这种方式跟普通调用的区别是目标Activity可以调用setResult方法回传一个携带数据的intent。原来的Activity可以在onActivityResult中得到该intent。

调用带返回结果的目标Activity。用startActivityForResult

目标Activity用setResult返回一个intent

处理返回结果。通过调用时设置的requestCode和返回设置的resultCode唯一确定一个调用关系。

3、  Intent隐式跳转

通过intent设置activity的配置参数,然后系统根据这些参数进行匹配,最后决定跳转到一个Activity。一个Activity的配置参数是通过清单文件intent-filter标签注册的。包括action、data、category等。系统匹配时先查看当前应用清单中有无匹配结果,然后才与系统注册的所有activity匹配,这时若有多个匹配结果就让用户去选择。

本例中一个activity的intent-filter配置

调用方式跟普通的一样

用例演示

三、Activity的启动模式

启动模式是对Activity创建的设置,是否要复用?是否新开任务栈?合理使用启动模式可以让程序运行更加流畅。消耗更少的资源。

1、  启动模式的设置

可以在清单文件中设置

也可以程序中通过Intent的addFlags设置。

2、  Standard模式

普通的创建方式,每次生成一个实例加入当前任务栈。不复用也不新开一个任务栈。

3、  SingleTop模式

栈顶复用,如果要创建的activity在栈顶,就直接复用。复用时只调用activity的onNewIntent并传入intent。

4、  singleTask模式

栈内复用,如果要创建的activity在当前任务栈中存在,就把他上面所有的activity出栈。调用onNewIntent。

5、  singleInstance模式

该模式只能在清单文件中设置,创建时新开一个任务栈,每次都复用一个activity。复用时调用onNewIntent。

Android四大组件初识之Activity的更多相关文章

  1. Android四大组件初识之Service

    Service作为Android四大组件之一,可以与Activity建立双向连接(绑定模式),提供数据和功能.也能够接收Intent单方面请求(调用模式),进行数据处理和调度功能. Service与A ...

  2. Android四大组件应用系列——Activity与Service交互实现APK下载

    Servic与Activity相比它没有界面,主要是在后台执行一些任务,Service有两种启动方法startService()和bindService(),startService方式Service ...

  3. Android四大组件之一:Activity

    介绍:活动是最基本的Android组件之一,在应用程序中,一个活动通常就是一个用户界面,每一个活动都被实现为一个独立的类,并且从活动几类中继承, 活动类将会显示由View控件组成的用户接口,并对时间E ...

  4. Android四大组件--活动(Activity)

    1. 概念 说明: 1). 创建和销毁 onCreate 和 onDestory 应用场景:当界面销毁的时候存储一些数据,在onCreate创建的时候回显数据: 例如:发短信:写短信写到一半,按hom ...

  5. Android 四大组件学习之Activity六

    本节学习Activity的状态保存与恢复. 先用样例開始: 布局文件主要是实现例如以下.大家自行编写 Activity逻辑代码: public class FiveActivity extends A ...

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

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

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

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

  8. Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)

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

  9. Android成长日记-Android四大组件之Service组件的学习

    1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...

随机推荐

  1. JavaWeb——Servlet开发3

    1.使用初始化参数配置应用程序 初始化参数的方式有两种 在Web.xml文件中使用<context-param>标签声明上下文初始化参数 <context-param> < ...

  2. maven的不同版本下载及环境配置

    Maven不同版本下载及环境配置 Maven下载 去到官网 https://maven.apache.org/ 会发现是最新版本,但是一般下载的话,都会下载比最新的版本要低两到三个小版本的,这里就下载 ...

  3. windows下通过idea连接hadoop和spark集群

    ###windows下链接hadoop集群 1.假如在linux机器上已经搭建好hadoop集群 2.在windows上把hadoop的压缩包解压到一个没有空格的目录下,比如是D盘根目录 3.配置环境 ...

  4. Java 调用http接口(基于OkHttp的Http工具类方法示例)

    目录 Java 调用http接口(基于OkHttp的Http工具类方法示例) OkHttp3 MAVEN依赖 Http get操作示例 Http Post操作示例 Http 超时控制 工具类示例 Ja ...

  5. ansible之数据提取与Juniper实例演示

    一.Ansible列表两种表达方式 基于YAML的列表 my_list: - a - b - c - d 基于Json格式的列表 {"my_list":[ "a" ...

  6. 一、Ansible入门篇

    一.Ansible简介 Ansible是一个自动化运维的工具 基于python语言编写,因此机器需要具备python环境. 通过ssh的连接方式进行自动化部署,ansible优先使用OpenSSH,在 ...

  7. 2018年蓝桥杯b组国赛真题

    1.标题:换零钞x星球的钞票的面额只有:100元,5元,2元,1元,共4种.小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱.小明有点强迫症,他坚持要求200元换出 ...

  8. Luogu P5490 扫描线

    模板题,想象一条线从左边扫到右边,只有在矩阵边界才会产生影响,所以我们离散化缩小数据范围,再用线段树维护扫描线上的情况,得出结果 #include<bits/stdc++.h> #defi ...

  9. Python学习 之 计算机基础

    第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信 1.2 操作系统 操作系统用于协同或控制硬 ...

  10. TokuDB · 引擎特性 · HybridDB for MySQL高压缩引擎TokuDB 揭秘

    原文出处:阿里云RDS-数据库内核组 HybridDB for MySQL(原名petadata)是面向在线事务(OLTP)和在线分析(OLAP)混合场景的关系型数据库.HybridDB采用一份数据存 ...