onActivityResult and launch mode singleTask

  • 问题情景

A Activity想通过startActivityForResult()启动 B Activity,B的launch mode是singleTask,A中的onActivityResult()会马上被调用,并且resultCode为0(RESULT_CANCELED),也就是说根本不是我们期望的。

  • 问题原因

Note that this method should only be used with Intent protocols that are defined to return a result. In other protocols (such as ACTION_MAIN or ACTION_VIEW, you may not get the result when you expect. 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.(摘选自Android官方文档)

最重要的意思是说如果使用了singleTask ,onActivityResult 会马上返回,而且返回值是cancel result,而原因就是新启动的Activity没有在你的task里面跑,因为singleTask会创建新的task。所以就导致了上面的问题。

  • 解决方法

既然是launch mode导致的问题,只需要把mainfest文件中把B Activity的
“launchMode”改为“standard”或者“singleTop”就可以了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容