总的来说就是,你的app组件可能是零丁启动并且是无序的,并且在任何时刻都有可能被体系或者用户烧毁。因为app组件生命的短暂性以及生命周期的弗成控制性,任何数据都不该该把存放在app组件中,同时app组件之间也不该该互相依附。
Service Locator:Service Locator 供给一个registry,类可以大年夜这里获得它们的依附而不是构建它们。相对依附注仁攀来说要简单些,所以如不雅你对依附注入不熟悉,可以应用 Service Locator 。
LiveData是一个可不雅察的数据持有者。 无需明白在它与app组件之间创建依附就可以不雅察LiveData对象的变更。LiveData还推敲了app组件(activities, fragments, services)的生命周期状况,做了防止对象泄漏的工作。
- public class UserRepository {
- private Webservice webservice;
- // ...
- public LiveData<User> getUser(int userId) {
- // This is not an optimal implementation, we'll fix it below
- final MutableLiveData<User> data = new MutableLiveData<>();
- webservice.getUser(userId).enqueue(new Callback<User>() {
- @Override
- public void onResponse(Call<User> call, Response<User> response) {
- // error case is left out for brevity
- data.setValue(response.body());
- }
- });
- return data;
- }
- }
这些模式许可你扩大本身的代码,因为它们供给了清楚的模式来治理依附,而不是赓续的反复代码。两者均支撑调换成mock依附来测试,这也是应用它们重要优势之一。
在这个例子中,我们将应用 Dagger 2 来治理依附。
如今我们修改UserProfileViewModel以应用repository。
- public class UserProfileViewModel extends ViewModel {
- private LiveData<User> user;
- private UserRepository userRepo;
- @Inject // UserRepository parameter is provided
推荐阅读
科学家之前在这方面的测验测验,都须要借助外部照明,但效不雅并不睬想。而芬兰坦佩雷理工大年夜学研究人员阿莱·普莱马基及其同事,此次将光响应液晶高弹体与光学纤维相结合,克服了外部激活需求。根据他们的>>>详细阅读
本文标题:App开发架构指南(谷歌官方文档译文)
地址:http://www.17bianji.com/lsqh/35427.html
1/2 1