`

关于startActivityforResult:Activity is launching as a new task, so cancelling。。。。

 
阅读更多
最近做项目apk升级使用startActivityForResult返回更新数据,发现跳转界面没finish就返回,自习查看log发现Activity is launching as a new task, so cancelling activity result提示,后来网上查找资料发现是android:launchMode="singleTask"设置引起,然而这里不需要singleTask,去掉该属性即可与以下问题类似

http://www.cnblogs.com/shelman/p/5123577.html

近来,在使用startactivityforresult是加上了flags:intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);     但是一启动Activity系统就回调了onActivityResult(int requestCode, int resultCode, Intent data)   ,系统ActivityManager里有一段打印:W/ActivityManager( 4877): Activity is launching as a new task, so cancelling activity result.      查阅了相关的资料,有如下的解释:

requestCode值>=0,不然,startActivityForResult就变成了 startactivity
从SDK我们可以看到如下深奥的解释:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
The other modes — singleTask and singleInstance — are not appropriate for most applications, since they result in an interaction model that is likely to be unfamiliar to users and is very different from most other applications.

从柯元旦的《Android 内核剖析》的第十章“Ams内部原理“10.1.3中有这样的一段话:请注意:SINGLE_TASK标识以及SINGLE_INSTANCE两个标识必须在r.result==0的条件中,即这两个标识只能用在startActivity()的方法中,而不能使用在startActivityForResult方法中。因为从Task的角度看,Android认为不同Task之间的Activity是不能传递数据的,所以不能使用NEW_TASK标识,但还是要调用forResult方法。
分享到:
评论

相关推荐

    startActivityforResult:如何在Flutter中启动结果结果活动的示例

    在Android原生开发中,`startActivityForResult()` 是一个常用的方法,用于启动一个新的Activity并等待其返回结果。在Flutter框架中,为了实现类似的功能,Flutter提供了`MethodChannel`和`Platform Channels`机制来...

    StartActivityForResult:StartActivityResult演示应用

    在这个"StartActivityForResult:StartActivityResult演示应用"中,我们将会深入理解这个过程,并探讨如何在实际项目中有效地使用它。 首先,`StartActivityForResult` 方法的使用通常包括两个步骤:启动目标...

    关于Activity与Fragment混用中对于startActivityForResult方法的解析示例

    以上就是关于Activity与Fragment混用中使用`startActivityForResult()`方法的解析。通过理解这个过程,开发者能够更好地管理应用程序的流程,提高用户体验。在实际的项目开发中,这样的交互方式是非常常见的,因此...

    Android之Intent通过startActivityForResult方法启动新Activity

    `startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新Activity执行完特定操作后返回结果。下面将详细阐述`startActivityForResult()`的工作原理及其在实际开发中的...

    StartActivityForResult

    在Android应用开发中,`StartActivityForResult`是一个关键的组件交互方法,用于在一个Activity(活动)启动另一个Activity并期望得到返回结果。这个方法允许开发者在应用程序的不同组件之间传递数据,通常用于实现...

    startActivityForResult的详细用法

    在Android应用开发中,`startActivityForResult`是一个非常重要的方法,它允许我们在启动一个Activity时传递数据,并在那个Activity执行完后返回结果到调用它的Activity。这个过程涉及到Intent、生命周期管理和数据...

    测试Activity的四种启动模式对startActivityForResult的影响

    在Android应用开发中,`Activity`是用户界面的主要载体,而`startActivityForResult`方法则用于在一个`Activity`中启动另一个`Activity`并期待得到返回的结果。本文将深入探讨`Activity`的四种启动模式(Standard、...

    安卓开发-模拟Activity进出栈.zip.zip

    通过Intent可以指定启动Activity的方式(比如FLAG_ACTIVITY_NEW_TASK等)以及传递数据。 4. **Task Affinity**: Task Affinity决定了Activity归属哪个Task,通常情况下Activity与所属的应用程序在同一Task中,但...

    Android学习笔记-Activity篇

    4. 清空the back stack:通过`FLAG_ACTIVITY_CLEAR_TOP`或`FLAG_ACTIVITY_NEW_TASK`标志可以清除Back Stack中的其他Activity,让指定Activity成为栈顶。 了解并熟练掌握这些Activity管理的知识点是成为一名合格的...

    StartActivityForResult小例子

    在Android应用开发中,`StartActivityForResult`是一个关键的机制,它允许一个Activity启动另一个Activity,并期待在后者完成时返回一些结果。这个过程涉及到两个主要的Activity:启动者(调用`...

    Android部分Activity篇.zip

    这篇文档“Android部分Activity篇”可能详细介绍了关于Android Activity的相关知识点,包括其概念、生命周期、启动模式、任务栈管理以及如何在代码中进行实践。以下是基于这些主题的详细解释: 1. **Activity概念**...

    Activity示例代码

    10. **Intent的Flags**:Intent可以设置各种标志,如FLAG_ACTIVITY_NEW_TASK(用于在新的任务栈中启动Activity)和FLAG_ACTIVITY_CLEAR_TOP(用于清除栈顶到目标Activity之间的所有Activity)。 11. **Activity的...

    Android-一种startActivityForResult更简单流程

    在Android应用开发中,`startActivityForResult()`是一个关键方法,用于在不同的Activity之间进行通信,尤其是在需要从一个Activity返回结果到另一个Activity时。这个方法使得开发者可以启动一个新的Activity,并...

    startActivityForResult Demo

    在Android应用开发中,`startActivityForResult`是一个非常重要的方法,它允许我们启动一个新的Activity,并在新Activity执行完特定操作后返回结果。这篇博客“startActivityForResult Demo”可能详细介绍了如何使用...

    【android】的startActivityForResult

    在Android应用开发中,`startActivityForResult`是一个关键方法,用于在两个Activity之间进行交互,尤其是在需要从一个Activity启动另一个Activity并期待返回结果时。这个方法允许开发者在启动新的Activity时传递...

    Android四大组件之一的Activity简单介绍

    ### Android四大组件之一的Activity详解 #### 一、Activity简介 **Activity** 是 Android 开发中的四大组件之一,它提供了一个界面供用户进行交互,以完成特定的任务。每个 Activity 都是一个可视化的屏幕,上面...

    Activity栈的简单应用.rar

    通过FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TOP等FLAG,可以控制Activity如何进入和退出栈,比如清除栈中所有Activity,或者回退到特定Activity。 5. **返回栈的概念**:当用户点击后退键或调用finish()方法...

    android 学习笔记7-页面跳转 Activity启动 生命周期 activity数据传递

    1、创建一个自己的Activity 2、启动activity-显示启动和隐式启动: 3、隐式启动自己的activity 4、获取隐启动传递过来的data数据 5、显示启动传递数据 ...7、开启activity获取返回值-startActivityForResult:

    Android应用源码之(Activity跳转与操作).zip

    开发者可以通过 FLAG_ACTIVITY_CLEAR_TOP 或 FLAG_ACTIVITY_NEW_TASK 等FLAG来控制回退栈的行为。 9. **Intent.FLAG_ACTIVITY_***:这些FLAG是Intent的附加标志,可以改变Activity的启动行为,例如清除栈中其他...

Global site tag (gtag.js) - Google Analytics