简单讲述一下Intent的传值过程

昨晚带女友Android入门,她本是照着一本书敲得,可以运行,后来她自己凭思维自己写了一个,然后出现了值没有传过来的问题,然后简单的了解了一下Intent是如何传递数据的。

我们的例子是这样的:

由A Activity通过startActivityForResult方法启动B Activity,然后由B将某个字符串返回给A,由于我女友的疏忽,key不小心写错了,当时我们使劲的找,却没发现问题,当时是这么找的,下面这段代码是B回传字符串值给A:

Intent intent = new Intent();
<span style="white-space:pre">		</span>intent.putExtra("helloWorld", "HelloWorld");
<span style="white-space:pre">		</span>setResult(Activity.RESULT_OK, intent);
当时的调试信息是这样的:


Intent里面没有任何问题,我们确定已经把要传递的值放了进去,并且intent.mExtras.mMap的值不为空,但是,我们从A里面拿到的Intent对象intent.mExtras.mMap的值却为空!!这样我们百思不得其解,看:


注意到data.mExtras.mMap后面了吗?它居然是Null!!!这顿时就让我匪夷所思了,这是为什么呢,让我们去Intent内部一探究竟:

在Intent内部有这么一段代码:

public String getStringExtra(String name) {return mExtras == null ? null : mExtras.getString(name);}
它是将数据放入一个Bundle属性里面去了,那再去mExtras里面看看:


我们可以看到在Bundler内部的mMap是有值的这个时候,咦?这是怎么回事呢?我们可以看到在mMap.get方法执行之前有个方法叫:unparcel();,那是不是在这个方法内部有蹊跷呢?

/*** If the underlying data are stored as a Parcel, unparcel them* using the currently assigned class loader.*//* package */ synchronized void unparcel() {if (mParcelledData == null) {return;}int N = mParcelledData.readInt();if (N < 0) {return;}if (mMap == null) {mMap = new HashMap<String, Object>(N);}mParcelledData.readMapInternal(mMap, N, mClassLoader);mParcelledData.recycle();mParcelledData = null;}

我们在 unparcel 方法内部看到,这个时候mMap是被赋值并且使用readMapInternal方法从某个地方读了出来(具体怎么读暂不去深究)。噢,原来就是这样。你们明白了嘛?


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

何恺明团队:stop gradient是孪生网络对比学习成功的关键

文 | Happy源 | 极市平台本文是FAIR的陈鑫磊&何恺明大神在无监督学习领域又一力作&#xff0c;提出了一种非常简单的表达学习机制用于避免表达学习中的“崩溃”问题&#xff0c;从理论与实验角度证实了所提方法的有效性&#xff1b;与此同时&#xff0c;还侧面证实了对比学…

美团无人配送CVPR2020论文CenterMask解读

计算机视觉技术是实现自动驾驶的重要部分&#xff0c;美团无人配送团队长期在该领域进行着积极的探索。不久前&#xff0c;高精地图组提出的CenterMask图像实例分割算法被CVPR2020收录&#xff0c;本文将对该方法进行介绍。 CVPR的全称是IEEE Conference on Computer Vision an…

如何使用ListView实现一个带有网络请求,解析,分页,缓存的公共的List页面来大大的提高工作效率

在平常的开发中经常会有很多列表页面&#xff0c;每做一个列表页就需要创建这个布局文件那个Adapter适配器文件等等一大堆与之相关的附属的不必要的冗余文件。如果版本更新迭代比较频繁&#xff0c;如此以往&#xff0c;就会使项目工程变得无比庞大臃肿。 如果看过这篇文章或者…

从信息检索顶会CIKM'20看搜索、推荐与计算广告新进展

文 | 谷育龙Eric源 | 搜索推荐广告排序艺术我是谷育龙Eric&#xff0c;研究方向有深度学习、搜索推荐&#xff0c;喜欢为大家分享深度学习在搜索推荐广告排序应用的文章。CIKM作为信息检索、数据挖掘等领域的国际一流会议&#xff0c;每年都有很多搜索推荐广告领域的精彩论文。…

复杂风控场景下,如何打造一款高效的规则引擎

| 在互联网时代&#xff0c;安全已经成为企业的命脉。美团信息安全团队需要采用各种措施和手段来保障业务安全&#xff0c;从而确保美团平台上的用户和商户利益不会受到侵害。 本文主要介绍了美团在打造自有规则引擎Zeus&#xff08;中文名“宙斯”&#xff09;的过程中&#x…

Android消息队列图片记录

很早之前为了给学生讲明白整个消息队列是怎么个情况&#xff0c;于是大概阅读了一下消息队列的整个工作过程&#xff0c;鉴于网上大部分都是文字说明&#xff0c;没有一个图例&#xff0c;于是做出了下面这张图&#xff0c;权当作以后复习之用&#xff0c;也供大家学习参考&…

Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!

原文连接&#xff1a;https://blog.csdn.net/u011535541/article/details/83379151 转载自 Git使用教程 预警&#xff1a;因为详细&#xff0c;所以行文有些长&#xff0c;新手边看边操作效果出乎你的预料&#xff09;一&#xff1a;Git是什么&#xff1f; Git是目前世界上最先…

主动学习入门篇:什么是主动学习?有哪些具体应用

文 | 淘系技术部 初类来源 | 知乎在大数据和算力的助力下&#xff0c;深度学习掀起了一波浪潮&#xff0c;在许多领域取得了显著的成绩。以监督学习为主的深度学习方法&#xff0c;往往期望能够拥有大量的标注样本进行训练&#xff0c;模型能够学到更多有价值的知识&#xff08…

LeetCode 59. 螺旋矩阵 II LeetCode 54. 螺旋矩阵

文章目录1. 题目信息2. LeetCode 59 解题3. LeetCode 54. 螺旋矩阵4.《剑指Offer》面试题291. 题目信息 给定一个正整数 n&#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的正方形矩阵。 示例:输入: 3 输出: [[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7…

如何查看Activity任务栈以及dumpsys_activity命令的简要使用及介绍

今天看到淘宝客户端的某个页面效果&#xff0c;效果是在两个Activity中做动画&#xff0c;为了知道究竟是不是在同一个Activity中做的效果&#xff0c;就必须采取一种手段来知道是不是同一个Activity.描述一下这个动画效果&#xff1a;列表页面点击图片&#xff0c;图片会滑动到…

论文浅尝 | 基于微量资源的神经网络跨语言命名实体识别

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究方向为跨语言知识图谱问答。来源&#xff1a;EMNLP 2018链接&#xff1a;https://www.aclweb.org/anthology/D18-1034问题背景与动机本文关注小语种/资源匮乏语言的跨语言命名实体识别问题&#xff0…

美团命名服务的挑战与演进

| 本文根据美团基础架构部技术专家舒超在2019 ArchSummit&#xff08;全球架构师峰会&#xff09;上的演讲内容整理而成。 命名服务主要解决微服务拆分后带来的服务发现、路由隔离等需求&#xff0c;是服务治理的基石。美团命名服务&#xff08;以下简称MNS&#xff09;作为服务…

NeurIPS 2020 | 自步对比学习:充分挖掘无监督学习样本

文 | 葛艺潇源 | PaperWeekly本文介绍一篇我们发表于 NeurIPS-2020 的论文《Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID》&#xff0c;该工作提出自步对比学习框架及混合记忆模型&#xff0c;旨在解决无监督及领域自适应表征学习中…

Postman安装与使用

原文链接&#xff1a;https://blog.csdn.net/fxbin123/article/details/80428216 一、Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的&#xff0c;用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。…

LeetCode 35. 搜索插入位置(二分查找)

文章目录1. 题目信息2. 解题2.1 暴力遍历2.2 二分查找1. 题目信息 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1:输入…

青年人在美团是怎样成长的?

2020年五四青年节&#xff0c;我们采访了美团技术团队9位青年代表&#xff0c;他们是来自清华大学、北京大学、中国科学院大学等国内高校的2位博士研究生和7位硕士研究生。在这个属于青年人的特别的日子里&#xff0c;我们请他们分享了自己在美团成长的故事。 道阻且长&#xf…

它来了它来了!2020深度学习硬核技术干货集锦!

这份干货来自于今天要给大家推荐的一个深度学习与计算机视觉领域知名公众号&#xff1a;「极市平台」。从2016年创立至今&#xff0c;极市平台深耕于DL与CV领域&#xff0c;输出300篇高质量原创文章&#xff0c;并积累了近10万名海内外专业算法开发者。极市平台公众号坚持每日更…

容器的使用和创建虚拟环境 vitualenv

xshell jupter容器的使用方法 #容器相当于子服务器 1 创建指定python版本的虚拟环境 方法1&#xff1a; 1.安装虚拟环境的第三方包 venv pip install venv 2.创建虚拟环境 cd 到存放虚拟环境的地址 在当前目录下创建名为env的虚拟环境&#xff1a; python -m venv env python…

Android中动态的更改selector中某张图片的属性

在我们平常开发的时候会有许多状态按钮&#xff0c;比如state_pressed&#xff0c;android:state_checked&#xff0c;或者就正常状态等等&#xff0c;我们做这样的效果通常需要三个文件&#xff0c;一张是按下的图片&#xff0c;一张是正常状态的图片&#xff0c;一张是管理它…

LeetCode 17. 电话号码的字母组合(回溯)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例:输入&#xff1a;"23" 输出&#xff1a;[&…