android中setResult的呼叫時機

2021-09-29 08:21:03 字數 1054 閱讀 6439

最近在做專案的過程中有需要用到返回值,但是由於需求比較複雜,感覺把setresult放到onstop中比較方便,但是發現在onstop中寫入setresult(。。。)和finish()之後,跟本就不會回傳值,後來又試了onpaulse和ondestroy均是不可以。

後來發現是因為錯過了onactivityresult的呼叫時機,

拿b返結果給a作示例:

b—onpause

a—onactivityresult

a—onrestart

a—onstart

a—onresume

b—onstop

b—ondestroy

從上面過程可以看出,首先是b處於pause 狀態,然後等待a執行 onrestart——> onstart ——〉onresume,然後才是b 的onsstop——>onsdestroy,而a的 onactivityresult() 需要在b的onpause之後,a的onrestart之前這中間呼叫,所以b中的setresult()函式應該放在b的onstop之前呼叫。

另外我試驗了一下,如果把setresult()放在 b 的 onpause() 裡面呼叫,結果仍然是無效的。

那麼setresult()應該在什麼時候呼叫呢?從原始碼可以看出,activity返回result是在被finish的時候,也就是說呼叫setresult()方法必須在finish()之前。所以在onpause、onstop、ondestroy方法中呼叫setresult()也有可能不會返回成功,因為這些方法呼叫不一定是在finish之前的,當然在oncreate()就呼叫setresult肯定是在finish之前的,但是又不滿足業務需要。

//以下是我測試是否可以返回result示例**,結果顯示,放到這三個位置都是不可以的。

private void goback(int i)

@override

protected void onpause()

@override

protected void onstop()

@override

protected void ondestroy()

android 中layout weight的作用

layout weight 用於給乙個線性布局中的諸多檢視的重要度賦值。所有的檢視都有乙個layout weight值,預設為零,意思是需要顯示多大的檢視就佔據多大的螢幕空 間。若賦乙個高於零的值,則將父檢視中的可 用空間分割,分割大小具體取決於每乙個檢視layout weight 值以及該值在當前...

Android中LayoutParams的用法

寧願做過了後悔,也不要錯過了後悔。本講內容 layoutparams的用法 一 layoutparams的認識 從官方文件可知layoutparams繼承於android.view.viewgroup.layoutparams.layoutparams相當於乙個layout的資訊包,它封裝了layo...

android中layout weight的理解

例如 xmlns android android layout width fill parent android layout height wrap content android background 00ff00 android weightsum 0 android orientation...