作家
登录

App开发架构指南(谷歌官方文档译文)

作者: 来源: 2017-05-26 09:21:05 阅读 我要评论

 
  •         return user
  •  
  •     } 
  •  
  • 如今我们修改UserProfileFragment,让它不雅察数据并更新UI。

    1. @Override 
    2.  
    3. public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    4.  
    5.     super.onActivityCreated(savedInstanceState); 
    6.  
    7.     viewModel.getUser().observe(this, user -> { 
    8.  
    9.       // update UI 
    10.  
    11.     }); 
    12.  

    每当User数据更新的时刻>

  • public interface Webservice { 
  •  
  •     /** 
  •  
  •      * @GET declares an HTTP GET request 
  •  
  •      * @Path("user") annotation on the userId parameter marks it as a 
  •  
  •      * WordStrment for the {user} placeholder in the @GET path 
  •  
  •      */ 
  •  
  •     @GET("/users/{user}"
  •  
  •     Call<User> getUser(@Path("user") String userId); 
  •  
  • ViewModel的一个简单的实现方法是直接调用Webservice获取数据,然后把它赋值给User对象。固然如许可行,然则跟着app的增大年夜会变得难以保护。ViewModel的职责过多也违背了前面提到的存眷点分别(separation of concerns)原则。别的,ViewModel的有效时光是和Activity和Fragment的生命周期绑定的,是以当它的生命周期停止便损掉所稀有据是一种不好的用户体验。相反,我们的ViewModel将把这个工作代劳给Repository模块。

    大年夜多半的app组件都声明在app manifest中,Android OS用它来决定若何将你的app与设备整合形成同一的用户体验。固然就如刚说的,桌面app只运行一个过程,然则一个优良的Android app却须要加倍灵活,因为用户操作在不合app之间,赓续的切换流程和义务。

    Repository模块负粜ウ理数据方面的操作。它们为app供给一个简洁的API。它们知道大年夜哪里获得数据以及数据更新的时刻调用什么API。你可以把它们算作是不合数据源(persistent model, web service, cache, 等等)之间的序言。

    下面的UserRepository类应用了WebService来获取用户数据。

    固然repository模块看起来没什么须要,但它其实演扮演侧重要的角色;它把数据源大年夜app中抽象出来。如今我们的ViewModel并不知道数据是由Webservice供给的,意味着有须要的话可声调换成其它的实现方法。

    注:为简单起见我们省略了收集缺点出现的情况。实现了裸露收集缺点和加载状况的版本见下面的Addendum: exposing network status。

    治理不合组件间的依附:

    前面的UserRepository类须要Webservice的实例才能完成它的工作。可以直接创建它就是了,然则为此我们还须要知道Webservice所依附的器械才能构建它。这明显的增减了代码的复杂度和偶合度(比如,每个须要Webservice实例的类都须要知道若何用它的依附去构建它)。别的,UserRepository很可能不是独一须要Webservice的类。如不雅每个类都创建一个新的WebService,就变得很重了。

    有两种模式可以解决这个问题:

    依附注入: 依附注入许可类在无需构造依附的情况下定义本身的依附对象。在运行时由另一个类来负责供给这些依附。在Android app中我们推荐应用谷歌的Dagger 2来实现依附注入。Dagger 2 经由过程遍历依附树主动构建对象,并供给编译时的依附。


      推荐阅读

      新软体机器人有望实现与人类安全接触

    科学家之前在这方面的测验测验,都须要借助外部照明,但效不雅并不睬想。而芬兰坦佩雷理工大年夜学研究人员阿莱&middot;普莱马基及其同事,此次将光响应液晶高弹体与光学纤维相结合,克服了外部激活需求。根据他们的>>>详细阅读


    本文标题:App开发架构指南(谷歌官方文档译文)

    地址:http://www.17bianji.com/lsqh/35427.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)