Android 为什么要通过片段将依赖项传递给viewmodel?
我正在研究谷歌的Android蓝图MVVM数据绑定示例() 我注意到viewmodel的依赖项是通过片段传递的Android 为什么要通过片段将依赖项传递给viewmodel?,android,android-fragments,mvvm,dependencies,Android,Android Fragments,Mvvm,Dependencies,我正在研究谷歌的Android蓝图MVVM数据绑定示例() 我注意到viewmodel的依赖项是通过片段传递的 public static TaskDetailFragment newInstance(String taskId) { Bundle arguments = new Bundle(); arguments.putString(ARGUMENT_TASK_ID, taskId); TaskDetailFragment fragment = new TaskDe
public static TaskDetailFragment newInstance(String taskId) {
Bundle arguments = new Bundle();
arguments.putString(ARGUMENT_TASK_ID, taskId);
TaskDetailFragment fragment = new TaskDetailFragment();
fragment.setArguments(arguments);
return fragment;
}
@Override
public void onResume() {
super.onResume();
mViewModel.start(getArguments().getString(ARGUMENT_TASK_ID));
}
上面示例中的任务id不能传递到viewmodel的构造函数中吗?而该片段是否会忘记任务id
有人能解释一下这样做的目的/好处吗
谢谢大家! Android需要能够在任何时候从头开始重新构建您的片段。它只知道两件事:
其思想是将任何初始化信息放入arguments包中。当您的activity+片段被销毁时(比如说内存压力),Android会保存参数包。如果随后重新创建activity+片段,则会提供相同的参数。捆绑包的特殊之处在于它实现了
Parcelable
,这意味着Android知道如何将其转换为纯字节,然后再转换回来。它是一个视图模型,作用域是刚刚创建的片段,发生在onCreate()
,不是吗?如果不通过参数将其传递给片段,则无法将taskId
放入onCreate
。