转载自:http://blog.csdn.net/tyj1982/article/details/6848879

----------

在Android应用程序开发的时候,从一个Activity启动另一个Activity并传递一些数据到新的Activity上非常简单,但是当您需要让后台运行的Activity回到前台并传递一些数据可能就会存在一点点小问题。

首先,在默认情况下,当您通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统都会创建一个新的Activity实例并显示出来。为了不让Activity实例化多次,我们需要通过在AndroidManifest.xml配置activity的加载方式(launchMode)以实现单任务模式,如下所示:

1 <activity android:label="@string/app_name" android:launchmode="singleTask"android:name="Activity1">

2 </activity>

launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:

1 protected void onNewIntent(Intent intent) {

2   super.onNewIntent(intent);

3   setIntent(intent);//must store the new intent unless getIntent() will return the old one

4   processExtraData();

5 }

不要忘记,系统可能会随时杀掉后台运行的Activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法,如下所示:

01 public void onCreate(Bundle savedInstanceState) {

02   super.onCreate(savedInstanceState);

03   setContentView(R.layout.main);

04   processExtraData();

05 }

06

07 protected void onNewIntent(Intent intent) {

08   super.onNewIntent(intent);

09   setIntent(intent);//must store the new intent unless getIntent() will return the old one

10   processExtraData()

11 }

12

13 private void processExtraData(){

14   Intent intent = getIntent();

15   //use the data received here

16 }

android onNewIntent相关推荐

  1. android onNewIntent 为什么要在onNewIntent的时候要显示的去调用setIntent

    原因: 当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getInte ...

  2. Android onNewIntent调用时机

    1.onNewIntent 首先看一下Activity 的生命周期: 从图中可知,初次启动 Activity 时,调用顺序为:onCreate() -> onStart() -> onRe ...

  3. 【Android】缩略图Thumbnails

    核心技术类目 全部主题HadoopAWS移动游戏JavaAndroidiOSSwift智能硬件DockerOpenStackVPNSparkERPIE10EclipseCRMJavaScript数据库 ...

  4. android Intent onNewIntent 什么时候调用

    1.activity A 的lanch model 为singleTop 此刻,A在activity 栈顶,那么就会调用A 的onNewIntent 如果A不在栈顶,则不会调用. 2.activity ...

  5. Android 监听home键(android:launchMode=singleTask 与 onNewIntent(Intent intent) 的用法

    android:launchMode="singleTask" 和 onNewIntent(Intent intent)两个特性,现总结一下经验: android:launchMo ...

  6. Android应用开发-onNewIntent()

    转载自Android中 activity 的onNewIntent函数

  7. android 不重新加载,android – 返回Activity而不重新创建(不调用onCreate())

    在导航应用程序时无需完成()活动.相反,您可以维护您的Activity back-stack并仍然实现您的目标.假设你有4个这样的活动: A – > B – > C – > D. 其 ...

  8. Android实现程序前后台切换效果

    本文演示如何在Android中实现程序前后台切换效果. 在介绍程序实现之前,我们先看下Android中Activities和Task的基础知识. 我们都知道,一个Activity 可以启动另一个Act ...

  9. Android 之Tasks和Back Stack(任务和返回栈)

    2019独角兽企业重金招聘Python工程师标准>>> 介绍: 应用通常包含多个Activity.每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Act ...

最新文章

  1. 4.二叉树的先序、中序以及后序遍历的递归写法与非递归写法(LeetCode第94、144、145题)
  2. mysql的主从复制原理与实现
  3. 第三课 弹性盒模型知识点
  4. predicate java_java代码之美(13)--- Predicate详解
  5. 笔记-项目质量管理-精简
  6. 解决vuex中store保存数据,刷新页面会清空得问题
  7. 【转】如何用好SVN的Branch
  8. 解决 IE8下 vs2008 无法调试
  9. Bootstrap Glyphicons图标
  10. spring数据源配置
  11. 职场达人教你如何做高效工作汇报!
  12. 神舟笔记本键盘键位互换
  13. 计算机实训项目结果文档,计算机基础实训报告.doc
  14. 自动打call机 qq伪自动发消息
  15. tkmybatis 子查询_【10/21】南池袋送餐桌和椅子 收纳盒子 洗衣机 | 下落合站送洗衣机...
  16. 我的世界服务器自动被踢怎么可以进去,我的世界中国版服务器中如何解决玩家作弊的简单方法...
  17. ISCC2022-MISC-降维打击
  18. Markdown编辑器 公式指导手册
  19. MYSQL 如何实现重复读
  20. [C#] 调用MATLAB(Matlab COM接口) (一)调用函数

热门文章

  1. [Android] Implementation vs API dependency
  2. 微软私有云分享(R2)16PowerShell查看虚拟机信息
  3. JavaScript写贪吃蛇游戏,代码思路都有,想学的自己看
  4. Office365----Project Online SKUs Change
  5. ElasticSearch之动态映射和模板
  6. HTML5事件——contextmenu 隐藏鼠标右键菜单
  7. 客户端网络pomelo学习笔记 (3) node.js 与 c 客户端 Diffie-Hellman 密钥交换算法的实现客户端网络...
  8. CentOS下的freenx配置
  9. 如何具备无坚不摧的意志力
  10. flink实时机器学习-alink在线机器学习remote模式贝叶斯建模实验记录