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

相關文章
相關標籤/搜索