首页 > 试题广场 >

在系统版本 5.0 以后的前提下,关于 startActiv

[单选题]
在系统版本 5.0 以后的前提下,关于 startActivityForResult() 方法,如果是 A 跳转 B,B 的 launchMode 属性为 singleInstance,A的 onActivityResult() 回调方法会在什么时候调用()
  • B 被启动的时候即调用
  • B 返回的时候调用
  • 下一次 A 启动的时候调用
  • 不会被调用
后来查资料,查文档,发现
For example, if the activity you * are launching uses the singleTask launch mode, it will not run in your * task and thus you will immediately receive a cancel result.


所以应该是A 

发表于 2017-09-04 15:46:48 回复(1)
测试环境:Android4.4
的确是选A 
B被启动的时候即调用
发表于 2017-09-29 15:02:28 回复(0)
Android5.0之前,当启动一个Activity时,系统将首先检查Activity的launchMode,如果为A页面设置为SingleInstance或者B页面设置为singleTask或者singleInstance,则会在LaunchFlags中加入FLAG_ACTIVITY_NEW_TASK标志,而如果含有FLAG_ACTIVITY_NEW_TASK标志的话,onActivityResult将会立即接收到一个cancle的信息 
在Android5.0做出来修改,系统即便启动的页面设置launchMode为singleTask或singleInstance,onActivityResult依旧可以正常工作
发表于 2017-12-13 14:07:01 回复(0)
答案是 B B返回的时候被调用,这个startActivityForResult 方法与启动模式没有多大关系。
编辑于 2021-12-23 11:56:58 回复(0)
发表于 2018-02-28 10:48:57 回复(1)
startActivityForResult与startActivity的不同之处在于
1、startActivity( ) 
仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。
2、startActivityForResult( ) 
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。

作用:
主要用作从第二个T2Activity传递数据到第一个T1Activity。

发表于 2017-06-20 16:25:07 回复(0)
揚头像
standard(每次启动都会创建该活动的一个新的实例); 
singleTop(如果返回栈的栈顶已经是该活动,直接使用而不创建);
 singleTask(启动时检查返回栈的实例,存在则将该活动以上的所有活动都 出栈,没有则创建新实例); 
singleInstance(启动一个新的返回栈来管理活动,eg:1-2-3;3-1-2);
发表于 2019-09-11 11:22:53 回复(0)
lxt头像 lxt
踩过这个坑,B的launchMode是singleInstance的时候,A一跳转B时就会触发A的onActivityResult回调。
发表于 2018-04-25 16:08:23 回复(0)
这个题应该选B(测试环境:Android4.4)
解释:Android系统不允许在两个任务栈里的活动直接通过startActivityForResult传递数据,当被启动的活动的启动模式是singleInstance或者singleTask时,直接在onActivityResult中返回RESULT_CANCEL。
发表于 2017-07-01 16:48:46 回复(2)
在这里,【下一次A启动的时候】和【B返回的时候】 不一样吗?
发表于 2020-10-25 17:21:52 回复(0)
经测试,答案 B
发表于 2019-03-14 14:35:50 回复(0)
singleTask的话会立即调用,singleInstance的话跟standard执行顺序一样
发表于 2018-05-05 12:33:10 回复(0)
oow头像 oow
这个答案有问题,如果给intent设置FLAG_ACTIVITY_NEW_TASK,会立即调用回调方法的
发表于 2018-03-22 22:59:43 回复(0)
这道题误人子弟,应该是启动B的时候立马回调result方法,当launch mode为singleTask或者是singleInstance的时候都这样
发表于 2017-11-28 15:03:08 回复(2)
赞同a 只要被启动的activity设置为singleinstance则startaActivityForResult不起效
发表于 2017-09-28 08:08:18 回复(0)
我觉得选择a,原因正如上面第二个回答中所述,不同task之间,不能传递数据。尽管那位选的是b,
发表于 2017-08-17 21:50:34 回复(0)
应该是b启动时回调
发表于 2017-03-13 16:43:21 回复(1)