美文网首页
使用StartActivityforResult 的一点问题记录

使用StartActivityforResult 的一点问题记录

作者: 忧郁的老王 | 来源:发表于2017-04-10 14:44 被阅读36次

    最近使用StartActivityforResult 的时候遇到一个奇怪的现象,即用Activity A 去StartActivityforResult  Activity B的时候 ActivityB 不执行直接返回到了 Activity A的 onActivityResult 方法。

    Activity A:

    public classMainActivityextendsActivity {staticStringTAG=MainActivity.class.getSimpleName();@BindView(R.id.jump_test)    Buttonbutton;@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView textView =(TextView)findViewById(R.id.test);textView.setOnClickListener(v -> Toast.makeText(this,"this",Toast.LENGTH_SHORT).show());ButterKnife.bind(this);//        startActivity();}@OnClick(R.id.jump_test)public voidonClik(View v) {        Intent intent =newIntent(this,TestActivity.class);startActivityForResult(intent,100);}@Overrideprotected voidonActivityResult(intrequestCode, intresultCode,Intent data) {super.onActivityResult(requestCode,resultCode,data);if(requestCode==100){            Log.e(TAG,"返回码"+requestCode+"//"+resultCode);}    }}

    Acitvity B:

    public classTestActivityextendsActivity {@BindView(R.id.back)    Buttonbutton;@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test);Log.e("XXX","test已经创建");ButterKnife.bind(this);}@OnClick(R.id.back)public voidback(View v){        Log.e("XXX","返回上级activity");//        TestActivity.this.setResult(110);TestActivity.this.finish();}}

    点击A 的跳转按钮得到如图日志

    可见B 还未被创建

    onActivityResult就被返回了

    查阅源码注释有:

    关键这里:

    if the activity you are launching uses the when you expect ........

    翻译:

    如果你使用了 singleTask 加载模式 该方法会立即返回 并接受到一个 取消的返回码。  然后前面还有个 In other protocols

    (在其他协议下,具体什么鬼 我也不明白 ,望知道的大佬指点一二)

    我这里的B 在mainfest 中 故意添加了 single Task 方便演示

    去掉该launchMode后的log

    以上这些 其他博客里都有介绍,,,然后重点来了,,,麻痹的,,

    经过测试这个立即返回的问题只出现在5.1之前的android 版本上,意思是说在 6.0 上 你就是写了singleTask 也不会导致立即返回。。。。。

    浪费了几个小时记录下,,

    相关文章

      网友评论

          本文标题:使用StartActivityforResult 的一点问题记录

          本文链接:https://www.haomeiwen.com/subject/jvfoyttx.html