为何Android官方文档显示Activity的onDestroy先于ViewModel的onCleared执行?
关于ViewModel onCleared()与Activity onDestroy()执行顺序的疑问
我通过调试断点确认了ViewModel的onCleared()与Activity的onDestroy()的执行顺序,查看ComponentActivity的源码可知,ViewModel.onCleared()是在Activity.onDestroy()回调之后被调用的,相关核心代码如下:
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(); // <- 此处触发ViewModel.onCleared() } mReportFullyDrawnExecutor.activityDestroyed(); } } });
但我无法理解Android开发者文档中ViewModel的示意图(图1),我认为正确的执行顺序应该如图2所示。请问官方文档为何会采用图1的示意方式?
内容的提问来源于stack exchange,提问作者Minsuk Jang
相关产品推荐
相关产品推荐

