- public class UserProfileFragment extends LifecycleFragment {
- private static final String UID_KEY = "uid";
- private UserProfileViewModel viewModel;
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- String userId = getArguments().getString(UID_KEY);
- viewModel = ViewModelProviders.of(this).get(UserProfileViewModel.class);
- viewModel.init(userId);
- }
- @Override
- public View onCreateView(LayoutInflater inflater,
- @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- return inflater.inflate(R.layout.user_profile, container, false);
- }
- }
注:膳绫擎的例子中持续的是LifecycleFragment而不是Fragment类。等Architecture Component中的lifecycles API稳定之后,Android Support Library中的Fragment类也将实现LifecycleOwner。
如今我们有了这些代码模块,若何连接它们呢?毕竟当ViewModel的user成员设置之后,我们还须要把它显示到界面上。这就要用到LiveData了。
连接ViewModel和repository
注:如不雅你已经在应用RxJava或者Agera如许的看维你可以持续应用它们,而不应用LiveData。然则应用它们的时刻要确保精确的处理生命周期的问题,与之相干的LifecycleOwner stopped的时刻数据流要停止,LifecycleOwner destroyed的时刻数据流也要烧毁。你也可以应用android.arch.lifecycle:reactivestreams让LiveData和其它的响应式数据流库一路应用(比如, RxJava2)。
如今我们把UserProfileViewModel中的User成员调换成LiveData,如许当数据产生变更的时刻fragment就会接到通知。LiveData的妙处在于它是有生命周期意识的,当它不再被须要的时刻会主动清理引用。
- public class UserProfileViewModel extends ViewModel {
- ...
- private User user;
- private LiveData<User> user;
- public LiveData<User> getUser() {
推荐阅读
科学家之前在这方面的测验测验,都须要借助外部照明,但效不雅并不睬想。而芬兰坦佩雷理工大年夜学研究人员阿莱·普莱马基及其同事,此次将光响应液晶高弹体与光学纤维相结合,克服了外部激活需求。根据他们的>>>详细阅读
本文标题:App开发架构指南(谷歌官方文档译文)
地址:http://www.17bianji.com/lsqh/35427.html
1/2 1