首页 > 试题广场 >

关于startActivityForResult()方法,如

[单选题]
关于startActivityForResult()方法,如果A跳转B,B的launchMode属性为singleInstance,A的onActivityResult()回调方法会在什么时候调用呢?
  • B被启动的时候即调用
  • B返回的时候调用
  • 下一次A启动的时候调用
  • 不会被调用
选A、B。
Android版本5.0之前,会startActivityForResult直接返回RESULT_CANCEL,选A。
Android版本5.0之后则是正常使用,即B finish后回调A中的onActivityForResult ,选B。
编辑于 2022-03-28 11:26:09 回复(0)
答案是B B返回的时候被调用,因为设置onActivitiyForResult的目的就是当一个activity跳转到另外一个activitiy 去完成某件事之后将返回结果返回前一个调用者,所以返回的时机是什么时候呢,那就是第二activity已经完成任务的时候,那么操作系统默认为当第二个activity结束时,调用返回,所以答案选B。
发表于 2017-01-23 21:35:36 回复(0)
我也觉得这种问题不应该有歧义,所以startactivityforresult就应该返回的时候再回调,所以5.0以后修正了
发表于 2019-07-27 17:18:02 回复(0)
a,经过实验,singletask和singleinstance都是b开启的时候调用
发表于 2017-02-28 20:29:30 回复(0)
桦头像
答案是A 其实看这种题目就应该质疑它应该不会是正常的答案。 从柯元旦的《Android 内核剖析》的第十章“Ams内部原理“10.1.3中有这样的一段话:请注意:SINGLE_TASK标识以及SINGLE_INSTANCE两个标识必须在r.result==0的条件中,即这两个标识只能用在startActivity()的方法中,而不能使用在startActivityForResult方法中。因为从Task的角度看,Android认为不同Task之间的Activity是不能传递数据的,所以不能使用NEW_TASK标识,但还是要调用forResult方法。
发表于 2017-02-24 10:40:24 回复(0)