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

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

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

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


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

而不是一般理解的不会回调onActivityResult方法class


总之,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);vi

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

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

相关文章
相关标签/搜索