/**
* 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方法进行判断
版权声明:本文为博主原创文章,未经博主允许不得转载。