以前开发的时候一直犯的错误,今天通过一些调研记录下来。
假定由AActivity来startActivityForResult到BActivity。
1.一般我们都会在BActivity设置setResult返回AActivity,所以我们可能会想当然的觉得,就因为我们setResult了,所以,才得以跳转到AActivity,今天写了个例子,如果BActivity没有setResult,而是直接finish,照样会进入AActivity,当然,是在AActivity的launchMode不为singleInstance,BActivity不为singleTask或singleInstance的前提下。
2.如果AActivity的launchMode为singleInstance,BActivity的launchMode为singleTask或singleInstance的情况下,AActivity startActivityForResult以后,会直接调用AActivity 的onActivityResult,为什么会这样呢,跟launchMode有关,可以去网上找找singleInstance和singleTask的区别,他们都是在activity栈中只存在一份实例,但是区别就是singleInstance一条实例独霸整个activity栈,startActivityForResult是在当前栈中寻找目标Activity的,如果目标Activity不在本Acitivity栈中,就会出现startActivityForResult后直接进入onActivityResult。随便举几个例子,如果AActivity startActivityForResult,而BActivity的launchMode是singleTask或者是singleInstance,此时BActivity就在一个新的activity栈中,AActivity在startActivityForResult以后在本activity栈中找不到BActivity,此时就会直接进入AActivity的onActivityResult,如果BActivity的launchMode为stardand呢?BActivity就会与AActivity在同一个activity栈中,流程就会是AActivity.startActivityForResult->BActivity->AActivity.onActivityResult。其他情况举一反三。
相关推荐
总结来说,理解Activity的生命周期、熟练运用launchMode以及正确使用onActivityResult方法,对于编写稳定、高效、用户体验良好的Android应用至关重要。通过实际的代码测试和实验,开发者可以更好地掌握这些核心概念...
在Android应用开发中,`Activity`是用户界面的基本单元,`launchMode`是每个`Activity`在`AndroidManifest.xml`中可配置的一个重要属性。它决定了`Activity`启动时的行为方式,对应用的流程和用户体验有直接影响。本...
6. **指定启动模式**:使用`android:launchMode`属性设置Activity的启动模式,常见的有`standard`、`singleTop`、`singleTask`和`singleInstance`。 **示例代码**: ```xml android:name=".SampleActivity" ...
- **`android:launchMode`**:控制Activity的启动模式,主要有四种:`multiple`、`singleTop`、`singleTask` 和 `singleInstance`。 - **`android:multiprocess`**:如果设置为 `true`,则表示此Activity运行在单独...
比如,设置android:launchMode属性可以改变Activity的启动模式,如单实例(singleInstance)、单任务(singleTask)、单栈顶(singleTop)等,每种模式会影响Activity在栈中的位置和生命周期调用。 深入理解...
- `android:launchMode`属性可以设置Activity的启动模式,如单实例、单任务等,影响Activity如何进栈和出栈。 8. **Activity的异常情况处理** - 当设备资源紧张或应用被系统杀死时,Android可能会销毁部分...
在Android应用开发中,Activity是构成应用程序的基本组件之一,它代表了用户可见并可以与之交互的屏幕。当用户在应用中导航时,通常会在不同的Activity之间切换,这就是所谓的Activity跳转。本教程将深入讲解如何在...
2. 定义launch模式:在AndroidManifest.xml中,可以通过`android:launchMode`属性定义Activity的启动模式,如标准模式(standard)、单实例模式(singleInstance)、单任务模式(singleTask)和单栈顶模式...
6. **Activity间的通信**:除了Intent,Android还提供了多种方式让Activity之间进行数据交换,如Bundle、Intent extras、startActivityForResult()等。 7. **Activity间的过渡动画**:为了提升用户体验,开发者可以...
这可以通过在Activity的onCreate()方法中设置`android:launchMode="singleTask"`和`android:noHistory="true"`属性来实现。 此外,还要注意Activity之间的数据传递。由于我们不再依赖于onActivityResult()来传递...
你可以使用AndroidManifest.xml中的`<activity>`标签设置Activity的属性,如`android:noHistory="true"`防止Activity被保留在历史堆栈中,或者`android:launchMode`控制Activity的启动模式。 9. 静态内部类与匿名...
- **启动方式**:通过`android:launchMode` 属性来控制`Activity` 的启动模式,包括: - **standard**:默认模式,每次启动都会创建新的实例。 - **singleTop**:如果当前任务栈顶部已经有该`Activity` 的实例,则...
为了启用这个功能,你需要在`AndroidManifest.xml`中声明`<activity>`标签,并添加`android:launchMode="singleTop"`和`android:action="android.intent.action.SEARCH"`属性。同时,还需要定义一个`searchable.xml`...
在Android开发中,Activity是应用程序的基本构建块,它代表了用户与应用交互的可视化界面。本文将深入探讨Activity的使用范例,通过一系列实例来帮助理解其核心概念和功能。 一、Activity生命周期 Activity的生命...
在这个名为"Activity_one"的压缩包中,我们很可能会找到一个或多个与Android `Activity`相关的源代码文件。让我们深入探讨一下`Activity`在Android开发中的工作原理和关键知识点。 1. **Activity生命周期**:`...
在Android应用开发中,Activity是用户界面的基本组件,它负责与用户进行交互。一个应用程序可能包含多个Activity,每个Activity对应不同的功能或界面。本示例将深入探讨如何在Android项目中有效地管理和协调多个...
为了提高用户体验,开发者可以通过设置LaunchMode、Intent.FLAG_ACTIVITY_NO_ANIMATION等手段优化启动过程,减少不必要的资源消耗和动画过渡。 综上所述,"Activity研究"涵盖了Android开发中Activity的各个方面,...
Activity是Android应用开发中的核心组件,它是用户与应用程序交互的窗口。在Android系统中,一个Activity通常代表一个屏幕,用户可以在该屏幕上进行各种操作。理解并熟练掌握Activity的工作原理和生命周期对于开发高...
如果需要从第二个Activity返回结果给第一个Activity,可以调用`startActivityForResult()`方法启动Intent,并在第二个Activity中调用`setResult()`设置返回值,最后在第一个Activity的`onActivityResult()`方法中...
这些模式通过在AndroidManifest.xml中为Activity设置`android:launchMode`属性来指定,影响Activity的生命周期和回退栈行为。 5. **FLAG**: Intent还允许设置各种Flag,以改变其行为。比如,`FLAG_ACTIVITY_NEW_...