activity调用finish方法理解

/**
     * Call this when your activity is done and should be closed.  The
     * ActivityResult is propagated back to whoever launched you via
     * onActivityResult().
     * 翻译下:当activity执行完毕并且应该关闭的时候,调用此方法。
     * 这个ActivityResult马上会返回给调用这个activity的onActivityResult()方法
     */
    public void finish() {
        if (mParent == null) {//没有父级activity
            int resultCode;//返回代码,默认为0
            Intent resultData;
            synchronized (this) {
                resultCode = mResultCode;
                resultData = mResultData;
            }
            if (false) Log.v(TAG, "Finishing self: token=" + mToken);
            try {
                if (resultData != null) {
                    resultData.setAllowFds(false);
                }
                if (ActivityManagerNative.getDefault()
                    .finishActivity(mToken, resultCode, resultData)) {
                    mFinished = true;
                }
            } catch (RemoteException e) {
                // Empty
            }
        } else {
            mParent.finishFromChild(this);//顾名思义,调用这个方法,会通过结束父级activity进而结束activity组的所有activity
        }
    }
总结:当调用finish方法后,activity中的全局变量mFinished就会成为true,当调用弹框,广播接收器等,需要调用isFinishing方法进行判断


版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2013-09-11 10:24  隐没  阅读(1834)  评论(0)    收藏  举报