使用StartActivityforResult 的一點問題記錄

最近使用StartActivityforResult 的時候遇到一個奇怪的現(xiàn)象,即用Activity A 去StartActivityforResult? Activity B的時候 ActivityB 不執(zhí)行直接返回到了 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+"http://"+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已經(jīng)創(chuàng)建");ButterKnife.bind(this);}@OnClick(R.id.back)public voidback(View v){? ? ? ? Log.e("XXX","返回上級activity");//? ? ? ? TestActivity.this.setResult(110);TestActivity.this.finish();}}

點擊A 的跳轉按鈕得到如圖日志

可見B 還未被創(chuàng)建

onActivityResult就被返回了

查閱源碼注釋有:

關鍵這里:

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

翻譯:

如果你使用了 singleTask 加載模式 該方法會立即返回 并接受到一個 取消的返回碼。 ?然后前面還有個 In other protocols

(在其他協(xié)議下,具體什么鬼 我也不明白 ,望知道的大佬指點一二)

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

去掉該launchMode后的log


以上這些 其他博客里都有介紹,,,然后重點來了,,,麻痹的,,

經(jīng)過測試這個立即返回的問題只出現(xiàn)在5.1之前的android 版本上,意思是說在 6.0 上 你就是寫了singleTask 也不會導致立即返回。。。。。

浪費了幾個小時記錄下,,

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容