我应该如何解释 Android Developers ViewModel 生命周期图?
How should I interpret the Android Developers ViewModel lifecycle diagram?
下图出现在Android Jetpack ViewModel Overview:
为什么中间一列上面的 onDestroy
图形有一个尖头而不终止 ViewModel Scope
而另一个 onDestroy
图形有一个方形末端并终止 ViewModel Scope
?
我能够与图表的创建者 Jose Alcérreca 取得联系,他告诉我“第二个 onDestroy
没有箭头是因为它是 activity 的生命周期(由 finish()
而非娱乐触发)。
我还被指向了 source code for ComponentActivity
,它显示了 ON_DESTROY
的观察者:
getLifecycle().addObserver(new LifecycleEventObserver() {
@Override
public void onStateChanged(@NonNull LifecycleOwner source,
@NonNull Lifecycle.Event event) {
if (event == Lifecycle.Event.ON_DESTROY) {
// Clear out the available context
mContextAwareHelper.clearAvailableContext();
// And clear the ViewModelStore
if (!isChangingConfigurations()) { // ***
getViewModelStore().clear(); // ***
}
}
}
});
如带星号的行所示,仅当对 onDestroy()
的调用 不是 时,才会为 ViewModelStore
调用 clear()
方法更改配置。
下图出现在Android Jetpack ViewModel Overview:
为什么中间一列上面的 onDestroy
图形有一个尖头而不终止 ViewModel Scope
而另一个 onDestroy
图形有一个方形末端并终止 ViewModel Scope
?
我能够与图表的创建者 Jose Alcérreca 取得联系,他告诉我“第二个 onDestroy
没有箭头是因为它是 activity 的生命周期(由 finish()
而非娱乐触发)。
我还被指向了 source code for ComponentActivity
,它显示了 ON_DESTROY
的观察者:
getLifecycle().addObserver(new LifecycleEventObserver() {
@Override
public void onStateChanged(@NonNull LifecycleOwner source,
@NonNull Lifecycle.Event event) {
if (event == Lifecycle.Event.ON_DESTROY) {
// Clear out the available context
mContextAwareHelper.clearAvailableContext();
// And clear the ViewModelStore
if (!isChangingConfigurations()) { // ***
getViewModelStore().clear(); // ***
}
}
}
});
如带星号的行所示,仅当对 onDestroy()
的调用 不是 时,才会为 ViewModelStore
调用 clear()
方法更改配置。