利用onNewIntent避免Activity之间的跳转传值多次实体化
onNewIntent
需要注意的是:
1、通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统也会创建一个新的Activity实例。为了不让Activity实例化多次,我们需要通过在AndroidManifest.xml配置启动方式。
2、launchMode为singleTask的时候,通过Intent跳到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候----------系统就不会再调用onCreate方法,而是调用onNewIntent方法。
能用到的地方是A-->B-->C-->A,此时onActivityResult就有些复杂了。 例如:
1、点击 设置密码(A),跳到 设置密码页面(B),输入密码;
2、点击完成 跳到 确定密码页面(C),输入密码,设置成功后返回到设置页面(A)并带回一个状态,此时(A)中的“设置密码”变成“修改密码”;
3、用户设置过密码后,此页面就变成了“修改密码”的选项
4、C跳到A,这个A我们要用以前栈中已有的,不能再去新建一个A的实例,所以需要在AndroidManifest.xml配置activity的启动方式以实现单任务模式。每步的跳转中,我们不能finish掉上一步Activity,否则按返回键时,用户体验不好。。。。这时就需要onNewIntent了。当然这只是我的一个思路。
首先在AndroidManifest.xml配置activity的启动方式以实现单任务模式

先看第二个SecondActivity,它需要把值传到FirstActivity。
再来看FirstActivity

此时没有走onCreat方法,但是为了以防万一,最好在onCreat方法里也写上操作,因为后台运行的Activity可能在内存过高时被系统杀掉,这时就会走onCreat方法。
利用onNewIntent避免Activity之间的跳转传值多次实体化的更多相关文章
- Android activity之间的跳转和数据传递
1.Activity之间的跳转 并且 传递数据 A Activity进行的操作 Intent intent = new Intent(context, B.class); intent.putExtr ...
- 实现android activity之间的跳转
android程序一般不会只有一个activity,会碰到activity之间的跳转.以下是使用Intent做应用程序内部的activity做跳转.比如,应用程序第一个activity是: 点击“下一 ...
- 杂记之activity之间的跳转
代码结构图 manifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xml ...
- 【Android基础】利用Intent在Activity之间传递数据
前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通. 从一个Activ ...
- Android 写一个Activity之间来回跳转的全局工具类(主要是想实现代码的复用)
废话不多说了,直接上代码,相信大家都能看得懂的. 一.主要工具类 package com.yw.chat.utils; import android.app.Activity; import andr ...
- 安卓欢迎界面和activity之间的跳转问题
使用安卓的UI界面,就不得不了解activity,由于actvity就像是一个form表单一样,全部的UI都呈如今这里,他能够承载全部的UI控件. INtent就是一个中继站一样.他负责组件之间的沟通 ...
- Android笔记(三) 使得Activity之间可以跳转---Intent
什么是Intent 一个APP肯定不单单由一个Activity构成,我们在使用过程中,经常需要在多个Activity中跳转,Android中Intent可以帮我们来完成在各个Activity中跳转的功 ...
- 利用Bundle在activity之间传递对象
(2010-12-04 09:45:54) 转载▼ 标签: it 分类: android开发 转自:http://chen592969029.javaeye.com/blog/772656 假如需要在 ...
- Activity之间的跳转
/* * 触发按钮bt1跳转到另一个Activity */ bt1.setOnClickListener(new OnClickListener() { @Override public void o ...
随机推荐
- 配置移动前端开发调试环境(nodejs+npm+weiner的安装和配置使用)
这段时间发现做移动端的开发调试是一大难题,网上逛了逛发现有一些工具可用,如chrome的远程调试,实际测试过程中我始终调试不成功,听说被墙后是不行的,所以最终找了如下的方法. 因为基于nodeJS环境 ...
- CSharper 学Quick-Cocos2d-X (一) 开发环境的搭建
前言 本来想写CSharper 学Cocos2dx系列的.但是最近在了解许多跨平台游戏开发框架后 最终决定使用Quick-cocos2d-x+lua进行第一个游戏项目的开发.经过一天多的折腾 终于 ...
- input输入框怎么禁止粘贴
<input type="text" value="" onpaste="return false;" /> 原文出处:http ...
- css中外边距合并
最近在布局时遇到一个有趣的问题 <style> #div1{width:200px;height:200px;background:red;} #div2{width:50px;heig ...
- 微信公众账号第三方平台全网发布源码(java)- 实战测试通过
第一部分:微信第三方平台配置
- C# 根据前台校验的值,决定是否执行后台方法
<asp:Button ID="Add" runat="server" Text="加入" class="add" ...
- nginx + lua +redis环境搭建
环境搭建,其实主要是lua的环境,这个环境够麻烦的,在网上找了很多前辈的文章,终于完成了 ,安装redis wget http://download.redis.io/releases/redis-3 ...
- 图片缩放应用(nearest / bilinear / three-order interpolate)
typedef xPixel PIXELCOLORRGB; double Sinxx(double value){ if (value < 0) value = -value; if (valu ...
- iOS中坐标转换
坐标转换,可以用UIVIew的方法 //由要转换坐标view的superView执行该方法,rect为待转换view的frame,view是要显示到哪儿的 - (CGRect)convertRect: ...
- Unity3d利用opencv保存游戏视频
脚本MyVideoWriter.cs using UnityEngine; using System.Collections; using OpenCvSharp; using OpenCvSharp ...