作为Android的开发者,关于startActivityForResult()相信大家都比较熟悉,在这里就不班门弄斧了。但是,关于startActivityForResult()在activity不同启动模式下onActivityResult()的回调有必要跟大家分享下。

1.BActivity的启动模式为standard

<activity android:name=".ui.AActivity" /><activity android:launchMode="standard" android:name=".ui.BActivity"/>
/** 2. AActivity逻辑比较简单,startActivityForResult跳转到BActivity 3. 然后打印onActivityResult()回调信息 4.  5. Created by XQM on 2018/4/3. */public class AActivity extends BaseActivity{    private int REQUEST_CODE = 1;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.fragment_set);    }    @OnClick(R.id.btn_move)    public void onViewClicked(View view) {        Intent intent = new Intent(this,BActivity.class);        startActivityForResult(intent,REQUEST_CODE);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode == REQUEST_CODE && resultCode == 2){            String name = data.getStringExtra("name");            Log.e("AActivity",name+"返回了,AActivity回调:"+"-------onActivityResult()--------");        }    }}
** * BActivity同样非常简单 *  * Created by XQM on 2018/4/3. */public class BActivity extends AppCompatActivity {    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Intent intent = new Intent();        intent.putExtra("name","BActivity");        setResult(2,intent);        finish();    }}


B返回A结果肯定回调onActivityResult()方法

2. BActivity的启动模式为singleTop

<activity android:name=".ui.AActivity" /><activity android:launchMode="singleTop" android:name=".ui.BActivity" />


B返回A结果同样回调onActivityResult()方法

.3. BActivity的启动模式为singleTask
大家可以先想想再看结果,猜想B返回A结果会回调onActivityResult()方法,下面认证下。

<activity android:name=".ui.AActivity" /><activity android:launchMode="singleTask" android:name=".ui.BActivity" />


果然结果跟猜想一致,B返回A回调了onActivityResult()方法,接下来看最后一种情况。

.4. BActivity的启动模式为singleInstance

<activity android:name=".ui.AActivity" /><activity android:launchMode="singleInstance" android:name=".ui.BActivity" />


非常震惊!onActivityResult()在activity四种启动模式下都可以回调。所以这样的题目:关于startActivityForResult()方法,如果是A跳转B,B的launchMode属性为singleInstance,A的onActivityResult()回调方法会在什么时候调用呢?
会做了吗?

更多相关文章

  1. Android文本输入框EditText属性和方法说明
  2. android 网络通信(一)
  3. Android开机log分析
  4. Android(安卓)back键ANR,与onPause,onDestory “延迟执行”的问题
  5. android 如何在状态栏上增加一个icon
  6. android 测试简介
  7. Android(安卓)ListView的item点击无响应的解决方法
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android中UI主线程与子线程
  2. Android(安卓)Service Framework分析
  3. Win7下android - emulator: ERROR: unkno
  4. Android(安卓)的属性系统
  5. 一个 Android(安卓)简易的新闻客户端
  6. Android的Handler总结(1)
  7. 解决 “android New package not yet reg
  8. Android四大组件之 服务Service
  9. Android(安卓)Studio 从入门到精通(Windo
  10. Android(安卓)NullPointerException解决