【发布时间】:2017-01-05 09:41:15
【问题描述】:
如果这个问题听起来非常基础,我们深表歉意。我有一个具有异步网络回调的Activity。回调可以在用户离开 Activity 后执行。
作为检查,我想使用isFinishing()(我不能使用isDestroyed(),因为我的最低API 级别是16 而不是isDestroyed() 要求的17)。
我可以在回调中使用isFinishing() 来确保我的逻辑仅在 Activity 未被销毁时执行吗?
更具体地说,即使在调用onDestroy() 之后,通过调用finish() 销毁的Activity,isFinishing() 是否返回true?
我还查看了源代码。这里是isFinishing():
public boolean isFinishing() {
return mFinished;
}
这里是finish(),其中变量设置为true:
/**
* Finishes the current activity and specifies whether to remove the task associated with this
* activity.
*/
private void finish(boolean finishTask) {
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.prepareToLeaveProcess();
}
if (ActivityManagerNative.getDefault()
.finishActivity(mToken, resultCode, resultData, finishTask)) {
mFinished = true;
}
} catch (RemoteException e) {
// Empty
}
} else {
mParent.finishFromChild(this);
}
}
/**
* Call this when your activity is done and should be closed. The
* ActivityResult is propagated back to whoever launched you via
* onActivityResult().
*/
public void finish() {
finish(false);
}
我也看过Understanding of isFinishing() 但我似乎无法得出这个特定问题的答案。
【问题讨论】:
-
我在帖子中提到了这一点,但我似乎无法回答我的问题。 “更具体地说,即使在调用 onDestroy() 之后,通过调用 finish() 销毁的 Activity 的 isFinishing() 是否返回 true ?”
-
有关 isFinishing stackoverflow.com/questions/5227071/… 的更多详细信息请参阅此主题
标签: android activity-lifecycle