Android Activity 中 onActivityResult() 与 setResult()的调用时机

Android setResult 的一点小问题 在Android的Activity中,我们经常使用startActivityForResult启动另外一个Activity,例如从Activity A启动 Activity B,那B何时调用setResult合适,能不能再finish()之后调用? 在这里做一下记录。 直接看下Activity的源码 setResult() 和 finish()两个方法 public final void setR... 阅读详情
今天遇到这样一个问题,我在ActivityA中用startActivityForResult()方法启动了Activity B,并且在B中通过 setResult()方法给A返回值,由于某些原因不能在setResult

()之后立刻调用finish()函数,只能通过用户按Back键自己退出到 A。按理说从B退出回到AactivityA过程中,A中的 onActivityResult() 应该被调用, 可是通过log发现,整个操作过程中 onActivityResult() 始终没有被调用。 前后研究了半天才发现 是 setResult() 的调用时机不对造成的,因为在我是在B 的 onStop() 函数中调用setResult()函数的,这个时候的set result是没有任何意义的,因为已经错过了A onActivityResult() 的调用时机。

因为在 B 退回 A过程中,首先是B处于Pause 状态,然后等待 A 执行 restart——〉 start ——〉resume,然后才是B 的stop——〉destroy,而A的 onActivityResult() 需要在 B pause之后,A restart 之前 这中间调用,所以 B中的setResult()函数应该放在B pause 之前调用。

另外我试验了一下,如果把setResult()放在 B 的 onPause() 里面调用,结果仍然是无效的。

附activity liferecycle图:


不同启动模式下onActivityResult的调用时机问题 在ActivityA中用startActivityForResult启动ActivityB时,根据ActivityB的不同启动模式(standard、singleTop、singleTask、singleInstance)ActivityA中的onActivityResult调用时机不同: 1 在standard、singleTop两个模式下,ActivityA中的onActivityRes 阅读详情

相关推荐

Android Activity间数据回调:startActivityForResult原理与实战

在Android应用开发中,组件间通信是构建交互式应用的基础。Activity作为核心组件,其间的数据传递与回调机制是实现复杂业务流的关键。通过Intent进行数据封装与传递,结合请求码(requestCode)和结果码(resultCode)的契约模式,构成了一个清晰的异步回调模型。这一机制的技术价值在于解耦了界面跳转与结果处理,使得数据流向可控、逻辑清晰。其典型应用场景包括用户信息编辑、图片选择、权限申请后的结果回调等。本文以用户信息编辑为例,深入剖析了startActivityForResult与on

weixin_30522095的博客 392

Android之setResult的用法

首先Activity:A跳转到Activity:B public static final int REQUEST_SEARCH = 100; Intent intent = new Intent(getActivity(), MapSearchDeviceActivity.class); startActivityForResult(intent, REQUEST_SEARCH); @O...

juer2017的博客 1万+

深入解析Android中startActivityForResult与setResult的交互机制

本文深入解析Android中startActivityForResult与setResult的交互机制,详细介绍了页面跳转时如何通过startActivityForResult发起请求,并通过setResult返回数据。文章结合实际开发场景,分析了请求发起、系统登记、结果返回及回调触发的完整流程,并提供了常见问题的解决方案。同时,还介绍了现代替代方案Activity Result API的优势和使用方法。

weixin_29261711的博客 391

Android开发——onActivityResult()和setResult()调用问题

今天学习了活动的生命周期。联想到昨天学习的向上一个活动传递消息。由此我就想到能不能在onDestroy()方法中调用setResult()来传递参数。经过试验后发现这时候调用并不能够有效传递参数。 具体实施方法是: 创建了一个ActivityA并从这里用startActivityForResult()启动ActivityB,在返回A时在B的onDestroy()方法中调用setResult(),此时A中的onActivityResult()再被调用,完成传参。 但是当我实验后通过log发现,不论我在onPa

qq_40689705的博客 887

HFSS新手避坑指南:从零搭建T形波导功分器(含参数扫描与优化实战)

本文为HFSS新手提供T形波导功分器设计的详细指南,涵盖基础设置、建模技巧、参数扫描与优化实战。重点解析内场分析中的常见陷阱,如单位设置、波端口定义和布尔运算错误,并分享优化设计的关键步骤,帮助工程师快速掌握HFSS在微波器件设计中的应用。

weixin_27442001的博客 138

grafana使用方法

1、点击仪表盘2、新建仪表盘3、选择数据源4、选择查询的条件5、美化。

2403_87359664的博客 323

【Android关键字】startActivityForResult/onActivityResult/setResult方法的使用

【Android关键字】startActivityForResult/onActivityResult/setResult方法的使用

丑小鸭 1776

MultiOTP Credential Provider避坑指南:从安装到RDP双因素认证的全流程解析

本文详细解析了MultiOTP Credential Provider从安装到实现RDP双因素认证(MFA)的全流程,重点分享了Docker部署、Active Directory集成及网络级认证(NLA)兼容性等环节的实战避坑经验,旨在帮助运维人员高效、稳定地部署离线双因素认证方案,提升Windows远程桌面安全性。

weixin_29255731的博客 642

Android初学习 - Activity 中 onActivityResult() 与 setResult()的调用时机

在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。 startActivityForResult(Intent intent, int requestCode); 第一个参数:一个I

myKernel 723

瑞芯微rv1126 rtsp+mpp+rga取流

瑞芯微rv1109 rtsp+mpp+rga取流

ZuoSeDiao的博客 6338

Meta开源Ego-Exo4D数据集:如何用1400小时多模态视频训练你的AI模型

Meta开源的Ego-Exo4D数据集包含1400小时多模态视频,涵盖第一人称和第三人称视角、眼动追踪、IMU传感器等多种模态,是AI模型训练的宝贵资源。本文详细介绍了从数据集下载、预处理到模型训练的全流程,帮助研究者高效利用这一多模态数据集进行AI模型开发。

weixin_29159441的博客 342

onActivityResult()和setResult()的调用时机

两个Activity之间传递数据,并保留用户最新编辑的数据 onActivityResult()和setResult()的调用时机

zhengpf的博客 3334

AD18软件——捕捉栅格、电气栅格、可见栅格的意义及设置

本文介绍了PCB设计中的三种栅格功能:可视栅格用于辅助定位(快捷键Shift+Ctrl+G),捕捉栅格控制光标移动间距(快捷键G),电气栅格实现元件自动吸附(快捷键Shift+E)。同时提供了在Altium Designer中快速查找相同网络标号的两种实用方法:Alt+鼠标单击或双击网络。这些功能可显著提高PCB设计效率和准确性。

qq_37999850的博客 645

onActivityResult() 与 setResult()

Android Activity 中 onActivityResult() 与 setResult()的调用时机 [url]http://blog.youkuaiyun.com/kuanxu/article/details/7477415[/url] onActivityResult的用法 [url]http://www.cnblogs.com/sipher/articles/2435078.h...

macleo的路 83

Python 爬虫实战:抓取悦动圈跑步爱好者运动轨迹数据,规划健身路线

通过本次 Python 爬虫实战,我们学习了如何使用 Python 抓取悦动圈跑步爱好者的运动轨迹数据,并基于这些数据进行分析和处理,最终规划出健身路线。在这个过程中,我们掌握了requests、BeautifulSoup、pandas和matplotlib等库的基本使用方法,了解了爬虫的基本原理和流程。希望本文能够帮助你更好地理解和应用 Python 爬虫技术,在数据处理和分析领域取得更多的成果。

u014481728的博客 2363

视觉Transformer实战 | Token-to-Token Vision Transformer(T2T-ViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准的 ViT 存在一些局限性,如需要大规模预训练数据、对局部结构建模不足等。Token-to-Token ViT (T2T-ViT) 通过引入渐进式分词过程改进了原始 ViT,使其能够在中小型数据集上取得更好的性能。本节将详细介绍 T2T-ViT 的技术原理,并使用 PyTorch 从零开始实现 T2T-ViT。

盼小辉丶的博客 4万+

1.5.44 Android Activity 关于 startActivityForResult() & 主界面连接多个子功能模块

  一、startActivityForResult()的用法 在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。   目的: A.java 是主界面,B.java 是子功能模块,要从A启动B,B干完活之后把结果汇报给A 先看 A.java 的相关代码...

u012913404的专栏 972

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android OnActivityResult()的调用时机问题

今天遇到这样一个问题,我在ActivityA中用startActivityForResult()方法启动了Activity B,并且在B中通过 setResult()方法给A返回值,由于某些原因不能在setResult ()之后立刻调用finish()函数,只能通过用户按Back键自己退出到A。按理说从B退出回到AactivityA过程中,A中的 onActivityResult() 应该被调用...

weixin_34404393的博客 2480

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Activity的setResult方法

今天遇到这样一个问题,我在ActivityA中用startActivityForResult()方法启动了Activity B,并且在B中通过setResult()方法给A返回值,由于某些原因不能在setResult ()之后立刻调用finish()函数,只能通过用户按Back键自己退出到A。按理说从B退出回到AactivityA过程中,A中的onActivityResult() 应该被调

dinglin_87的专栏 2万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

onActivityResult不能收到setResult(RESULT_OK, intent);的回调

onActivityResult不能收到setResult(RESULT_OK, intent);的回调。解决这个问题时被坑了两个小时。。。只怪当时自己手欠给MainFest.xml中每个Activity设置了android:launchMode="singleTask"。 项目中用到...

chumomin2634的博客 700

onActivityResult 介绍

提示: onActivityResult 为活动基类Activity中的方法,用于获得子活动返回的数据,需要配合子活动的setResult和finish方法使用。那么onActivityResult 是在什么时候调用的呢,三者之间什么关系呢? 一、相关代码: setResult需在finish方法之前调用,用来设置返回数据,其关键在finish方法委托ActivityManagerNa

Androd的专栏 2588

关于activity的startActivityForResult / onActivityResult / setResult学习和理解

最近在工作过程中,需要涉及到数据埋点,来监听用户操作,统计功能模块用户的行为和数据量。之前用startActivity就有点不合适,因为跳转到目标activity的入口可能很多,所以不适合进行埋点行为。所以在此引入 - startActivityForResult - onActivityResult - setResult 这几个方法,学过android开发的都会接触

ibelieveyouwxy的专栏 569

Android的Activity的launchMode与onActivityResult方法的关系

Android的Activity有四种启动模式,分别是standard、singleTop、singleTask、singleInstance。 Activity启动模式设置: Activity的四种启动模式: 1. standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2. single

每天进步一点点 2088
上一篇: Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
下一篇: setBackgroundDrawable和setBackgroundColor的用法
爽玩一百天
博客等级 码龄14年 20粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值