首页
学习
活动
专区
圈层
工具
发布

一个SingleTask与跳转传值引发的血案

blog.csdn.net/wj_november/article/details/49851117 最近在做项目中遇到这样一个情况: Activity A跳转到Activity B,Activity A设置为launchMode...大致意思就是说一个Activity B如果跳转到另一个launchMode为SingleTask的Activity A时,如果task里面已经有Activity A,那么跳转时只需要调用它里面的onNewIntent...这句话的大致意思是说,如果你的Task里面已经有Activity A实例,且其他其他界面跳转到A时不会产生新的A的实例时,onNewIntent()会被调用,通常这时候这里面的Intent是用来重新启动那个已经存在的...我们之前在getBundle()方法里(见上面代码:getBundle)调用的是getIntent()方法,这个方法返回的是最原始启动Actvity A的Intent,而不是由Activity B跳转到...我们回到了上一个问题。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    返回数据给上一个活动

    (MainActivity.this,SecondActivity.class); startActivityForResult(intent,1);//这个方法就是在活动销毁时返回一个结果给上一个活动...一个是 //第一个参数是intent买第二个是请求吗,用来判断数据的来源 这个方法就是在活动销毁时返回一个结果给上一个活动,需要 接受两个参数。...重写一个函数Ctrl+O ---- 这个函数有三个参数一个是是启动活动传入的请求码。...二是我们在返回数据时传入的处理结果 三是data,携带有返回数据的Intent由于活动里面可能会调用这个函数去启动不同的活动,每一个活动返回的数据都会回调到 ? 这个方法里面来检查值 ?...它最重要的用途是在启动活动时,可以将其视为活动之间的粘合剂。它基本上是一种被动数据结构,其中包含要执行的动作的抽象描述。

    1.3K20

    Android-使用Intent传递数据

    向下一个活动传递数据 Intent不仅可以用来启动活动,还可以在启动活动的时候传递数据。...返回数据给上一个活动 Activity中还有一个StartActivityForResult()方法也是用于启动活动的, 但这个方法期望在活动被销毁的时候能够返回一个结果给上一个活动。...”,把要传递的数据存放在Intent中,调用setResult()方法, 专门用于向上一个活动返回数据的,接收两个参数, 第一个参数用于上一个活动返回处理结果,一般使用RESULT_OK和RESULT_CANCELED...由于使用的是startActivityForResult()方法启动的SecondActivity的, 在被销毁之后会回调上一个活动的onActivityResult()方法,因此需要重写这个方法:..., 第二个参数resultCode,即我们返回数据时传入的处理结果, 第三个参数data,即携带着返回数据的Intent。

    1.7K30

    android学习笔记----隐式意图和显式意图

    隐式意图和显式意图: 显式意图:显式意图明确指明了启动活动的上下文和想要启动的目标活动,显式意图明确指定了Intent应该传递给哪个组件。 隐式意图:没有明确指定组件名的Intent为隐式意图。...,就用startActivityForResult startActivityForResult(intent, 1); // 请求码为1 } // 在活动销毁后返回上一个活动的...如果活动显式返回,则不会返回任何结果,或者在操作期间崩溃,resultCode将为RESULT_CANCELED。 当您的活动重新启动时,您将在onResume()之前立即收到此调用。...resultCode int:子活动通过其setResult()返回的整数结果代码。...由于在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此我们首先要做的就是通过

    2.5K10

    AndroidStdio1_5

    在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了...既然可以传递数据给下一个活动,那么能不能够返回数据给上一个活动呢?答案是肯定的。 不过不同的是,返回上一个活动只需要按一下Back键就可以了,并没有一个用于启动活动的Intent来传递数据。...通过查阅文档你会发现,Activity中还有一个startActivityForResult()方法也是用于启动活动的,但这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。...onActivityResult()方法带有三个参数: 第一个参数requestCode,即我们在启动活动时传入的请求码。 第二个参数resultCode,即我们在返回数据时传入的处理结果。...确定数据是从SecondActivity返回的之后,我们再通过resultCode的值来判断处理结果是否成功。最后从data中取值并打印出来,这样就完成了向上一个活动返回数据的工作。

    88130

    Java国际化本地化实战

    ② Locale类中通过静态常量定义了一些常用的本地化对象,③和④处就直接通过引用常量返回本地化对象 用户还可以获取系统默认的本地化对象,如⑤ 在测试时,如果希望改变系统默认的本地化设置,可以在启动...JVM时通过命令参数指定: java -Duser.language=en -Duser.region=US MyTest。...ResourceBoundle为加载及访问资源文件提供便捷的操作,下面的语句从相对于类路径的目录中加载一个名为resource的本地化资源文件: ResourceBundle rb = ResourceBundle.getBundle.../i18n/fmt_resource 启动Spring容器,并通过MessageSource...我们其实在5.1.1节讲解Spring容器的内部工作机制时已经埋下了伏笔:在介绍容器启动过程时,我们通过代码清单5-1对Spring容器启动时的步骤进行剖析,④处的initMessageSource()

    2.7K41

    安卓入门-第二章-探究活动

    活动创建的步骤小结: 我们以手动创建活动为例: 创建一个空的活动 -> 创建布局 -> 活动中加载布局 -> 注册活动 -> 配置程序配置主活动 2.2.4 在活动中使用Toast  Toast是Android...得到按钮的实例之后,我们通过调用setOnClickListener()方法为按钮注册一个监听器,点击按钮时就会执行监听器中的onClick()方法。...这个构造函数接收两个参数: 第一个参数Context 要求提供一个启动活动的上下文 第二个参数Class 则是指定想要启动的目标活动,通过这个构造函数就可以构建出Intent 的“意图”。  ...如果你想要回到上一个活动怎么办呢?很简单,按下Back键就可以销毁当前活动,从而回到上一个活动了。使用这种方式来启动活动,Intent的“意图”非常明显,因此我们称之为显式Intent 。...6.3启动活动的最佳写法 启动活动的方法为: 首先通过Intent构建出当前的“意图”, 然后调用startActivity()或startActivityForResult()方法将活动启动起来,如果有数据需要从一个活动传递到另一个活动

    4.2K31

    安卓应用安全指南 4.1.2 创建使用活动 规则书

    4.1.2.1 仅在应用内部使用的活动必须设置为私有(必需) 仅在单个应用中使用的活动,不需要能够从其他应用接收任何意图。...由于意图过滤器的特性,以及工作原理,即使您打算向内部的私有活动发送意图,但如果通过意图过滤器发送,则可能会无意中启动另一个活动。...默认情况下,它被设置为"standard"。 在"standard"设置中,新实例总是在启动活动时创建,任务遵循属于调用活动的任务,并且不可能创建新任务。...创建新任务时,其他应用可能会读取调用意图的内容,因此当敏感信息包含在意图中时,需要使用"standard"活动启动模式设置。...此外,根据实现,向伙伴或内部活动发送意图时,也存在各种信息泄漏的风险。 即使将数据发送到私有活动,也存在风险,意图中的数据可能通过LogCat泄漏。

    2.1K20

    7.Activity

    intent对象的参数指定要跳转Activity 通过设置Activity的包名和类名实现跳转,称为显式意图 通过指定动作实现跳转,称为隐式意图 隐式跳转 隐式意图跳转至指定Activity Intent...Activity时,意图中设置的action必须跟"com.itheima.sa"是完全匹配的) data :指定数据(操作什么内容) category: 类别 (默认类别,机顶盒,车载电脑) 隐式意图启动...然后在 data部分指定了协议是 tel,号码是 10086 Activity跳转时的数据传递 俩种方法: Activity通过Intent启动时,可以通过Intent对象携带数据到目标Activity...在新开启的界面里面实现设置数据的逻辑 Intent data = new Intent(); data.putExtra("phone", phone); //设置一个结果数据,数据会返回给调用者//第一个参数用于向上一个活动返回处理结果...Activity中还提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。

    1.6K150

    安卓软件开发_应用程序UI组件意外停止

    编译后的Java代码——包括应用程序要求的任何数据和资源文件,通过aapt工具捆绑成一个Android包,归档文件以.apk为后缀。...相反,当需求产生时它只是启动其他应用程序块。 对于这个工作,当应用程序的任何部分被请求时,系统必须能够启动一个应用程序的进程,并实例化该部分的Java对象。...一个应用程序可能只包含一个活动,或者像刚才提到的短信应用,它可能包含几个活动。这些活动是什么,以及有多少,当然这取决于它的应用和设计。一般来讲,当应用程序被启动时,被标记为第一个的活动应该展示给用户。...一个活动还可以使用额外的窗口——例如弹出式对话框,或当一用户选择屏幕上一个特定的项时一个窗口显示给用户重要的信息。 窗口的可视内容是由继承自View基类的一个分层的视图—对象提供。...为了保持音乐继续播放,媒体播放器活动可以启动一个服务运行在后台。系统将保持音乐播放服务运行,甚至媒体播放器离开屏幕时。 可以连接到(绑定到)一个持续运行的服务(并启动服务,如果它尚未运行)。

    1.7K10

    Java 国际化标准程序实现

    ("Message"); // 访问资源文件properties时,只需要提供文件名即可不要后缀格式名 System.out.println(rb.getString("info")); }...("Message"); // 访问资源文件properties时,只需要提供文件名即可不要后缀格式名 String str = rb.getString("msg"); System.out.println...("Messages",loc); // 访问资源文件properties时,只需要提供文件名即可不要后缀格式名 String str = rb.getString("msg"); System.out.println...(MessageFormat.format(str, "yuyang_Wang")); } } 在上两则实例中,我们通过对 Locale类对象 loc设置了指定的国家和区域,properties资源会根据...总结 资源文件:文件名称的每个单词首字母大写,后缀为:*.properties 通过ResourceBundle类可以读取在指定的CLASSPATH下的资源文件 Locale 类用于指定读取的资源文件的语言环境

    80920

    消息栏通知(Notification)介绍

    Activity,但是之前的打开的Activity依旧存在 方法有二: 1、在Activity的onPause()方法体中增加: finish(); 这样,在打开新的Activity的时候,旧的就进入了暂停态,启动...是的,这句就够了,这里我得说一下Activity的栈机制: 我们先来看看Intent的结构new Intent(MainActivity.this,MainActivity.class); 第一个参数为产生该意图...(Intent)的活动,这个逻辑再清晰不过了,要做的事情得有个发出的主体 第二个参数为该意图的对象,即是这个意图是什么,我们来看看。...反射能通过一个类名来找到某个特定的类实例么?...回到原点来,我们为Intent添加: openintent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 之后,这个意图一旦产生,就会自动清除栈顶的活动,即是说,上一个被打开的活动会被终结掉

    2K30

    【Android编程实战】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗

    这段字符 接下来新建Innocent类和Attack类,两个类分别显示activity_main和attack这两个布局 我们假设Attack这个类为恶意活动,我不想让用户在启动恶意软件时看到恶意活动而怀疑软件的真实意图...我想让用户在启动软件时只看到无害的活动,从而隐藏软件的真实意图,那么要如何实现呢 我可以预先启动Attack类,紧接着启动Innocent类,这样用户在页面上只能看见最顶层的Innocent类,而不是恶意活动...启动之后才被启动,在活动先后顺序上,Innocent在最顶层 所以用户最终看到的活动只有Innocent这个无害活动 而Attack启动时取消了过度动画,除了个别机型会有稍微闪动外,在启动时无明显变化,..._2时,任务栈Task_1也就随着Activity_2到达前台 但Activity_1的allowTaskReparenting属性为true,根据官方文档的解释,该活动能从后台转移至与其有相似性的任务...接着使恶意活动的allowTaskReparenting属性为true,这样就能在合法应用中的活动转至前台时,使得恶意活动同样转至前台 至此,整个攻击流程结束 0x03 漏洞利用及其危害 在0x01中

    3.5K40

    安卓应用安全指南 4.1.3 创建使用活动 高级话题

    导出属性的值 True 意图过滤器已定义 公开 意图过滤器未定义 公开、伙伴、内部 表 4.1-2 当未指定Activity的导出属性时,Activity是否为公开的,取决于Activity的意图过滤器的存在与否...发送到任务的根Activity的意图,被添加到任务历史中。 根活动是在任务中启动的第一个活动。 任何应用都可以通过使用ActivityManager类,读取添加到任务历史的意图。...例如,当默认活动由启动器启动时,此活动将是根活动。 根据 Android 规范,发送到根Activity的意图的内容可以从任意应用中读取。 因此,有必要采取对策,不要将敏感信息发送到根活动。...另外,启动模式也可以通过设置意图的标志来更改。 标志FLAG_ACTIVITY_NEW_TASK以singleTask模式启动活动。 启动模式可以指定为这些。我会解释它们和根活动的关系。...Toast.makeText(this, Str(); break; } } } 4.1.3.5 使用活动时的日志输出 当使用一个活动时,意图的内容通过

    2K20
    领券