如果一個activity要返回數據到啟動它的那個activity,可以調用setResult()方法。那什么時候去調用setResult()方法返回數據呢?看一下源碼就明白了:
public final void setResult(int resultCode, Intent data) { synchronized (this) { mResultCode = resultCode; mResultData = data; } }
......
public void finish() { if (mParent == null) { int resultCode; Intent resultData; synchronized (this) { resultCode = mResultCode; resultData = mResultData; } if (Config.LOGV) Log.v(TAG, "Finishing self: token=" + mToken); try { if (ActivityManagerNative.getDefault() .finishActivity(mToken, resultCode, resultData)) { mFinished = true; } } catch (RemoteException e) { // Empty } } else { mParent.finishFromChild(this); } }
這段代碼可以看出activity返回result是在被finish的時候,也就是說調用setResult()方法必須在finish()之前。
那么如果在如下方法中調用setResult()也有可能不會返回成功:onPause(),onStop(),onDestroy().
