如果活动的启动模式为singleInstance,则不会触发onActivityResult

saj*_*joo 27 android single-instance android-activity

我有一个Activity,它基本上是我的主要活动,它的启动模式是单个实例.但由于singleInstance,onActivityResult()回调不会触发.如果我将清单文件中的启动模式更改为任何其他模式,它可以正常工作.

你能解释为什么这个回调不起作用吗?

Ped*_*iro 47

我认为问题是singleInstance不会让被调用者活动与调用者存在于同一个任务中,因此它无法将值返回给调用者.

考虑使用singleTask:

singleTask

系统在新任务的根目录下创建活动,并将意图路由到该任务.但是,如果活动的实例已存在,系统会通过调用其onNewIntent()方法将意图路由到现有实例,而不是创建新实例.

singleInstance

与"singleTask"相同,但系统不会在持有实例的任务中启动任何其他活动.活动始终是其任务的唯一成员.

http://developer.android.com/guide/topics/manifest/activity-element.html

  • 如果`onActivityResult`取决于父和子都在同一个任务中,那么不应该在某处记录??? 我正在处理通过`onActivityResult` wtf调用的间歇性失败. (7认同)
  • 我不相信这是正确的,我试过它并且SingleTask在完成时没有触发onActivityResult.这个StackOverflow似乎表明了同样的事情:http://stackoverflow.com/questions/8960072/onactivityresult-with-launchmode-singletask (3认同)

小智 5

如果活动是singleInstance,它将是任务中唯一的活动,因此它始终是任务的首要任务.所以当你调用startActivityForResult它时会立即触发回调方法.