Я недавно начал изучать компоненты архитектуры Android (LiveData
, ViewModel
и Navigation
). Поэтому я создал нижнее навигационное приложение.
Я помещаю здесь некоторый пример кода, чтобы обсудить его в качестве примера.
Класс SampleViewModel: -
public class DashboardViewModel extends ViewModel {
private MutableLiveData<String> mText;
public DashboardViewModel() {
mText = new MutableLiveData<>();
mText.setValue("This is dashboard fragment");
}
public LiveData<String> getText() {
return mText;
}
}
SampleFragmentClass:-
public class DashboardFragment extends Fragment {
private DashboardViewModel dashboardViewModel;
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
dashboardViewModel = ViewModelProviders.of(this).get(DashboardViewModel.class);
View root = inflater.inflate(R.layout.fragment_dashboard, container, false);
final TextView textView = root.findViewById(R.id.text_dashboard);
dashboardViewModel.getText().observe(this, new Observer<String>() {
@Override
public void onChanged(@Nullable String s) {
textView.setText(s);
}
});
return root;
}
}
Позвольте мне пояснить, что в этих фрагментах кода нет ничего плохого.
Я просто хочу задать несколько вопросов: -
Является ли ViewModel
полностью ответственным за загрузку данных, которые будут использоваться действием или фрагментом?
Если мне нужно получить некоторые данные с сервера, я бы позвонилAPI из ViewModel
или само действие?
Если мне нужно выполнить какие-то действия на основе контекста, я бы сделал это в упражнении или фрагменте. Есть ли какое-то соглашение или рекомендация, что я должен делать это во ViewModel?