遇到Android onActivityResult()不执行的问题

      之前在使用startActivityForResult()的时候,一直都很是顺利,今天却发现出现了一个奇怪的状况。 html

      问题描述以下: android

      一、我在执行完startActivityForResult()函数后,尚未启动目标Activity,当前activity中的onActivityResult()方法却先执行了。 函数

      二、我在执行完目标Activity,返回的时候,却发现onActivityResult()方法不执行。 测试

      就那么几行代码,找了很久没有找到缘由。通过搜索一番,发现问题出在Activity的launchMode上。通过测试发现原来在调用startActivityForResult的时候,目标Activity的启动模式只能是launchMode="standard" 和 “singleTop”模式,不能是其余2种模式。 this

去查看android文档,发现有以下描述: htm

Note that this method should only be used with Intent protocols that are defined to return a result. In other protocols (such asACTION_MAINorACTION_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. 文档

咱们在使用singleTask或者singleInstance的时候,会新起一个task,这个时候咱们在返回的时候就会返回一个cancel结果。同时从Locat中会看到以下警告: get

Activity is launching as a new task, so cancelling activity result.
相关文章
相关标签/搜索