Activity的四种启动模式和onNewIntent()

Android中Activity启动模式详解

  在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。

  Android总Activity的启动模式分为四种:

复制代码
Activity启动模式设置:<activity android:name=".MainActivity" android:launchMode="standard" />Activity的四种启动模式:1. standard默认启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。2. singleTop如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。3. singleTask如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 4. singleInstance在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
复制代码


       大家遇到一个应用的Activity供多种方式调用启动的情况,多个调用希望只有一个Activity的实例存在,这就需要Activity的onNewIntent(Intent intent)方法了。只要在Activity中加入自己的onNewIntent(intent)的实现加上Manifest中对Activity设置lanuchMode=“singleTask”就可以。

       onNewIntent()非常好用,Activity第一启动的时候执行onCreate()---->onStart()---->onResume()等后续生命周期函数,也就时说第一次启动Activity并不会执行到onNewIntent(). 而后面如果再有想启动Activity的时候,那就是执行onNewIntent()---->onResart()------>onStart()----->onResume().  如果android系统由于内存不足把已存在Activity释放掉了,那么再次调用的时候会重新启动Activity即执行onCreate()---->onStart()---->onResume()等。

     当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的Intent。


原文链接:http://blog.csdn.net/linghu_java/article/details/17266603

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java8 默认方法

概述 Java8新增了接口的默认方法。使用default关键字。 默认方法就是接口可以有实现方法&#xff0c;而且不需要实现类来实现其方法。相对于JDK1.8之前的接口来说&#xff0c;新增了可以接口中实现方法。 可以说在接口中实现方法一部分原因是为了lambda表达式服务的&#xf…

Android Activity 生命周期中onStart()和onResume()的区别

首先了解Activity的四种状态 Running状态&#xff1a;一个新的Activity启动入栈后&#xff0c;它在屏幕最前端&#xff0c;处于栈的最顶端&#xff0c;此时它处于可见并可和用户交互的激活状态。 Paused状态&#xff1a;当Activity被另一个透明或者Dialog样式的Activity覆盖时的…

Android 原生ExoPlayer 解析

1.简述与应用范围 ExpPlayer是一个开源的&#xff0c;App等级的媒体API&#xff0c;它的开源项目包含了library和示例。 ExoPlayer相较于MediaPlayer有很多优点&#xff1a; 1. 支持基于http的移动流媒体协议&#xff0c;包括DASH&#xff0c;HSL&#xff0c;Smooth Stream。同…

Java8 Stream

概述 Java8 API中添加了一个新的抽象成为流Stream&#xff0c;可以以一种声明的方式处理数据。 Stream与java.io包中的InputStream和OutputStream是完全不同的概念。Java8中的Stream是对集合对象功能的增强&#xff0c;专注与对集合对象进行各种非常便利、高效的聚合操作&…

Java 注解原理

下面来看看Java中注解是如何实现的 创建注解类Inter: 创建测试类Test: 在程序第二句设置断点,可以看到: 可以看到,注解的实例是一个动态代理类的对象. 要想查看这个动态代理类,可以在代码中加 System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFiles", …

myeclipse导入项目报错Target runtime Apache Tomcat v8.0 is not defined

今天想要查看一个现有的项目&#xff0c;本着最好使用原版本开发工具的奇怪想法&#xff0c;下载了一个myeclipse&#xff0c;在导入项目的时候报了一个错误 问题倒是挺明确的&#xff0c;就是项目需要的tomcat运行环境没有&#xff0c;有两种方法解决&#xff1a; 第一种方…

ExoPlayer用户手册

贴上原网址&#xff1a;https://google.github.io/ExoPlayer/guide.html 非完全翻译&#xff0c;有需要可以原网址自取&#xff0c;我发现网上也蛮多这个指导的翻译&#xff0c;可以去看看~ 开始啦&#xff01;&#xff1a; ExoPlayer是一个开源的应用级媒体播放器&#xff0…

Android Studio查找功能(搜索功能)及快捷键

1、在当前窗口查找文本【CtrlF】 F3 向下查找关键字出现位置 ShiftF3 向上一个关键字出现位置 2、在当前工程内查找文本【CtrlShiftF】 先会弹出一个对话框&#xff0c;直接点击【find】&#xff0c;开始在整个工程内查找该字符串 查找结果如下&#xff1a; 3、查找类【C…

ZJU夏令营面试记录

首先记录一下这次夏令营面试。 1、进去后&#xff0c;圆桌会议&#xff0c;8个老师坐着。准备了6份简历简历表示不够&#xff0c;以后要多打几份。 2、首先&#xff0c;用英语介绍一下自己的专业&#xff08;表示一脸懵逼&#xff09; 3、说一下你这个暑假做了什么东西&…

Python的闭包

什么是闭包 #定义一个函数 def test(number): #在函数内部再定义一个函数&#xff0c;并且这个函数用到了外边函数的变量&#xff0c;那么将这个函数以及用到的一些变量称之为闭包 def test_in(number_in): print("in test_in 函数, number_in is %d"%number_in) ret…

On the coexistence of transport protocols in data centers

论文信息&#xff1a;S. M. Irteza, A. Ahmed, S. Farrukh, B. N. Memon, and I. A. Qazi.On the coexistence of transport protocols in data centers. In Proceedings of IEEE ICC, 2014.数据中心传输协议的共存 摘要 云数据中心的出现直接导致了数据中心TCP&#xff08;D…

Python中的特殊属性与方法

模块的特殊属性__doc__模块的说明文档__all__指明模块希望被使用的属性、类和方法__file__模块所在路径类的特殊属性__slots__限制类的实例允许添加的属性,是一个tuple元组类的特殊方法__new__(cls[, ...]) 1. __new__ 是在一个对象实例化的时候所调用的第一个方法 2. 它的第一…

如何做科研20171206

昨日听董大一席话&#xff0c;感触颇多&#xff0c;今日在此进行记录。&#xff08;加粗字体为董大箴言&#xff09; ① 关于看论文 董大问我你最近看了什么论文&#xff0c;我说&#xff0c;论文的题目没有记下来&#xff0c;只记得主要讲了什么。我以前一直以为一篇论文的阅…

contiki cooja仿真

最近在做contiki平台上的一些cooja仿真的东西&#xff0c;发现现在网上能学到的东西实在是很有限&#xff0c;现在在这里将我最近学到的一些东西做一下总结。 一、 关于运行的一般步骤&#xff1a; https://www.zhihu.com/question/48708549/answer/139050874 知乎上这个问…

MySQL指令笔记

-- 双中划线空格: 单行注释&#xff0c; 与#相同-- 链接数据库 mysql.exe -h localhost -P3306 -uroot -p-- 查看服务器的对外处理字符集 show variables like character_set%;-- 修改服务器认为的客户端数据的字符集为gbk&#xff1b;(单次访问有效) set character_set_client…

NS2:undefined reference to `xxx' collect2: error: ld returned 1 exit status

这个问题是没有链接。 刚开始先确认&#xff0c;头文件有没有导入。 以下是完整的提示信息错误&#xff0c;检查之后发现hdr_ant_pkt所在的头文件已经被导入&#xff1b;In function hdr_ant_pkt::access(Packet const*): cmu-trace.cc:(.text._ZN11hdr_ant_pkt6accessEPK6Pack…

6大设计原则之单一职责原则

单一职责原则 如果有一个用户管理类,类图如下 我想,任谁也能看的出这个接口设计的有问题,用户的属性和用户的行为没有分开,应该把用户的信息抽取成一个业务对象,把用户的行为抽取成一个业务对象,按照这个思路对类图进行修正,如下图所示 其实,在实际使用中我们更倾向于使用两个…

linux下Gnuplot的使用

压力是最好的老师。以前学不会Gnuplot只是因为不想学&#xff0c;

6大设计原则之里氏替换原则

面对对象中的继承 优点如下: 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性提高代码的重用性子类可以形如父类,但又异于父类提高代码的可扩展性,很多开源框架的扩展接口都是通过继承父类来实现的提高产品或项目的开放性 缺点如下: 继承是侵入性的.只要继承,就…

scikit-learn安装

安装找到一个简书版本&#xff0c;讲的挺好的&#xff0c;先贴网址 https://www.jianshu.com/p/26ab6c22051e 但是在安装过程中&#xff0c;遇见了问题&#xff0c;现在贴一下&#xff1a; numpy_quaternion-2018.5.17-cp36-cp36m-win32.whl is not a supported wheel on this …