onActivityResult与singleTask或singleInstance的冲突问题

首先 在activity one里的一个button ,绑定了响应函数。
内部的具体逻辑是这样的:

 Intent intent = new Intent(one.this,two.class);     
 startActivityForResult(intent, 1);
 Log.v("gjh","0");

因为是 startActivityForResult()启动的,所以这个activity里还要有一个onActivityResult(int requestCode, int resultCode, Intent data) 函数。
内部是这样的:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) 
 {  
          Log.v("gjh","1");

 }

在activity two中的button响应函数是这样的:

    Log.v("gjh",“2“);
    Intent intent=new Intent();
    setResult(RESULT_OK,intent);     
    finish();

先点击one中 button ,再点two的button回来。
讲道理的话,打印的顺序应该是 0、2、1。
但是我打印出来的确是0、1、2。
这说明点击one的button后直接进入onActivityResult,而从two结束后反而没有进入onActivityResult。

startActivityForResult() 和 onActivityResult()与 Activity 的加载模式(launchMode)有关。
原项目中的启动模式是singleTask。
而这个会和startActivityForResult() 和 onActivityResult()产生冲突。

此时会有打印:Activity is launching as a new task, so cancelling activity result.”

经测试,所有须要传递或接管的 Activity 不容许设置该属性,或只能设为标准模式,不然体系将在 startActivityForResult() 后直接调用 onActivityResult()。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值