Android的Activity的launchMode与onActivityResult方法的关系

Android的Activity有四种启动模式,分别是standard、singleTop、singleTask、singleInstance。

测试发现,不同的模式下onActivityResult的调用时机不同:

1 在standard、singleTop两个模式下,onActivityResult方法会在当前的Activity结束掉之后被调用


2 在singleTask、singleInstance两个模式下,onActivityResult方法会立即调用,等到再setResult的时候,就不再起作用了

而不是通常理解的不会回调onActivityResult方法


总之,setResult方法与onActivityResult方法不是同步的。使用的时候需要注意

使用案例如下:一共有3个Activity,A,B, C    。调用的顺序如下  A----B-----C,B和C都有返回A的操作,并且要返回数据更新A的界面,所以A的launchMode必须是singleTask,,这样的话B,C传递数据的方式不再是setResult,然后finish()掉,A中监听onActivityResult()方法。。。正确的做法是,在A中监听方法onNewIntent(Intent intent),然后B或C返回A的方式应该是:

Intent intent = new Intent(B.this,A.class);

intent.putExtra("flag","1");

startActivty(intent);这样启动A的话,onNewIntent会被监听到,参数Intent就包含了 传递的数据,这里注意的是当调用onNewIntent()时,A中的UI组件已经加载完毕,更新UI的宽度高度等是没有问题的。

你可能感兴趣的:(Android的Activity的launchMode与onActivityResult方法的关系)