问题现象描述:
Activity P1通过startActivityForResult的方式启动Activity P2,此时,期望应该在P2 finish的后onActivityResult才应该被调用到。而实际结果是:startActivityForResult执行后,onActivityResult也立即会被执行到。
仔细分析其原因,此问题的原因与Activity P2在AndroidManifest.xml文件中配置的launchMode有关系。
当android:launchMode="singleTask"的时候则会出现此问题,而配置会其他三种,则不会有这个问题的出现。
在android:launchModel="singleTask"的情况下,如果P1中必须要在onActivityResult执行一些操作,可以考虑在P2进行back操作或者是finish操作的时候,通过发送一些Broadcast消息到P1中进行必要的处理。
相关推荐
`startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新Activity执行完特定操作后返回结果。下面将详细阐述`startActivityForResult()`的工作原理及其在实际开发中的...
3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)
要实现`startActivityForResult`的Rx化,我们可以创建一个自定义的Observable,它会在被订阅时启动一个新的Activity,并在子Activity完成时发射结果。这需要我们使用`Intent.createObservable()`方法,结合`...
当一个Activity启动另一个Activity并期望得到结果时,可以使用startActivityForResult()方法启动新Activity,并在新Activity中调用setResult()设置返回结果。当新Activity结束时,系统会调用源Activity的...
本示例关注的是如何在Adapter中利用`startActivityForResult()`方法启动一个新Activity,并在原Activity中通过`onActivityResult()`接收返回的数据。我们将详细探讨这个过程及其背后的机制。 首先,`...
3. 被启动的Activity执行其业务逻辑,当需要返回结果时调用`setResult`方法,设置结果码和数据。 4. 被启动的Activity通过`finish()`方法结束,此时会向启动者发送一个包含结果的Intent。 5. 主Activity的`...
因此,在`startActivityForResult`中使用此模式时,无论当前`Activity`是否在栈中,都会创建新实例,且能正常接收返回结果。 2. **SingleTop**:如果目标`Activity`位于栈顶,那么不会创建新的实例,而是重用栈顶的...
通过设置不同的请求码,我们可以在`onActivityResult()` 中判断是哪个按钮触发了新Activity的启动,并据此执行不同的操作。在`NewActivity` 中,当操作完成后,可以调用`setResult(resultCode, data)` 设置返回结果...
2. **在被启动的Activity中处理业务**:在 `SecondActivity` 中执行你需要的操作,然后根据情况设置返回结果和结果代码。 ```java Intent resultIntent = new Intent(); // 设置数据... setResult(RESULT_OK, ...
在Android应用开发中,`startActivityForResult`是一个非常重要的方法,它允许我们在启动一个Activity时传递数据,并在那个Activity执行完后返回结果到调用它的Activity。这个过程涉及到Intent、生命周期管理和数据...
当子Activity启动另一个Activity并期待返回结果时,这个结果通常由`onActivityResult()`方法处理。然而,在`ActivityGroup`里,子Activity的`onActivityResult()`不会被调用。这是由于`ActivityGroup`作为父Activity...
当一个Activity(我们称为启动Activity)调用`startActivityForResult`启动另一个Activity(我们称为被启动Activity)时,可以传递一个Intent对象,Intent中可以包含启动新Activity所需的参数。被启动Activity完成...
4. 当新启动的Activity被其他应用组件打断(如来电、通知等)时,`onActivityResult()`可能不会被调用,需注意处理这种情况。 5. 在Android 6.0及以上版本,如果新启动的Activity运行在单独的任务栈,`...
当我们调用startActivityForResult()方法来跳转页面的时候需要重写onActivityResult方法,不然就和startActivity没什么两样,这个demo就是简单说明调用时间。流程如下:MainActivity::onCreate MainActivity::...
在Android应用开发中,`StartActivityForResult`是一个关键的组件交互方法,用于在一个Activity(活动)启动另一个Activity并期望得到返回结果。这个方法允许开发者在应用程序的不同组件之间传递数据,通常用于实现...
`startActivityForResult()`方法用于启动一个新的Activity,并期望在目标Activity执行完后返回结果。其基本用法如下: ```java Intent intent = new Intent(this, TargetActivity.class); startActivityForResult...
1. 启动子活动时,需要使用 startActivityForResult 函数,而不是 startActivity 函数。 2. 在子活动中,需要使用 setResult 函数来设置返回的数据。 3. 在原来的活动中,需要重写 onActivityResult 函数来处理返回...
这个方法在父Activity(启动另一个Activity的Activity)中定义,当子Activity结束并返回数据时,`onActivityResult`会被调用。在这个小demo中,我们将深入探讨`onActivityResult`的使用,以及如何通过`setResult`...