Hea*_*ers 10 android thread-safety android-activity
在Android中,Activity.finish()从后台线程调用是否安全,或者只能从主线程调用?该文档没有提及有关此方法的线程安全性的任何信息.
G. *_*ike 15
不它不是.
代码使用至少一个变量mFinished,没有同步.完全停止.
public void finish() {
if (mParent == null) {
int resultCode;
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);
}
}
Run Code Online (Sandbox Code Playgroud)