Android activity的setResult()在什么時候調用?


如果一個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().

 

 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM