use*_*702 7 android activity-lifecycle
如果这个问题听起来非常基本,请道歉.我有一个Activity异步网络回调.用户离开Activity后可以执行回调.
作为我想要使用的支票isFinishing()(我不能使用,isDestroyed()因为我的最低API级别是16而不是17 isDestroyed()需要).
我可以isFinishing()在回调中使用以确保我的逻辑仅在Activity未被销毁时执行吗?
更具体地说isFinishing(),finish()即使在调用之后调用销毁的Activity也会返回true onDestroy()?
我也看了一下源代码.这是isFinishing():
public boolean isFinishing() {
return mFinished;
}
Run Code Online (Sandbox Code Playgroud)
这里是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);
}
Run Code Online (Sandbox Code Playgroud)
我也看了一下了解isFinishing(), 但我似乎无法得出这个特定问题的答案.
您的问题可能是与任何答案一样好的答案,因为 的javadoc没有Activity.isFinishing()指定已销毁的Activity. 然而,从来源来看,似乎完全不令人困惑的命名mFinished(由isFinishing())从未设置为false(初始化时除外),因此一旦设置为true将始终保持该值。话虽如此,mFinished它是包私有的,所以理论上另一个类可以修改该值。在实践中,我认为可以安全地假设isFinishing()返回 true iffActivity正在完成或已完成完成时返回 true!
换句话说,isFinishing() == isFinishing() || isDestroyed()
| 归档时间: |
|
| 查看次数: |
2554 次 |
| 最近记录: |