作家
登录

谷歌官方Android应用架构库——LiveData

作者: 来源: 2017-07-19 09:07:56 阅读 我要评论

【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!


谷歌官方Android应用架构库——LiveData

每当你认为在 ViewModel 中须要一个 Lifecycle 类时,转换可能是解决筹划。

该机制许可以较少的资本根据须要惰性运算来创建 LiveData。ViewModel 可以轻松获取到 LiveData 并在它们膳绫擎定义转换规矩。

LiveData 是一个数据持有者类,它持有一个值并许可不雅察该值。不合于通俗的可不雅察者,LiveData 遵守应用法度榜样组件的生命周期,以便 Observer 可以指定一个其应当遵守的 Lifecycle。

如不雅 Observer 的 Lifecycle 处于 STARTED 或 RESUMED 状况,LiveData 会认为 Observer 处于晃荡状况。

  1. public class LocationLiveData extends LiveData<Location> { 
  2.     private LocationManager locationManager; 
  3.  
  4.     private SimpleLocationListener listener = new SimpleLocationListener() { 
  5.         @Override 
  6.         public void onLocationChanged(Location location) { 
  7.             setValue(location); 
  8.         } 
  9.     }; 
  10.  
  11.     public LocationLiveData(Context context) { 
  12.         locationManager = (LocationManager) context.getSystemService( 
  13.                 Context.LOCATION_SERVICE); 
  14.     } 
  15.  
  16.     @Override 
  17.     protected void onActive() { 
  18.         locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); 
  19.     } 
  20.  
  21.     @Override 
  22.     protected void onInactive() { 
  23.         locationManager.removeUpdates(listener); 
  24.     } 
  25.  

Location 监听的实现有 3 个重要部分:

  • onActive():当 LiveData 有一个处于晃荡状况的不雅察者时该办法被调用,这意味着须要开端大年夜设备不雅察地位更新。
  • vonInactive():当 LiveData 没有任何处于晃荡状况的不雅察者时该办法被调用。因为没有不雅察者在监听,所以没有来由保持与 LocationManager 的连接。这是异常重要的,因为保持连接会明显消费电量并且没有任何好处。
  • setValue():调用该办法更新 LiveData 实例的值,并将此变革通知给处于晃荡状况的不雅察者。

可以像下面如许应用新的 LocationLiveData:

  1. public class MyFragment extends LifecycleFragment { 
  2.     public void onActivityCreated (Bundle savedInstanceState) { 
  3.         LiveData<Location> myLocationListener = ...; 
  4.         Util.checkUserStatus(result -> { 
  5.             if (result) { 
  6.                 myLocationListener.addObserver(this, location -> { 
  7.                     // 
     1/4    1 2 3 4 下一页 尾页

      推荐阅读

      Windows安全协议现 LDAP & RDP 中继漏洞

    这些马脚让进击者可破解口令获取Windows凭证。Preempt合营开创人兼CEO阿基特&middot;桑切蒂称:&ldquo;威逼态势持续成长,凸显出现有安然协定中存在的马脚,这2个马脚也没什么不合。NTLM让公司企业和>>>详细阅读


    本文标题:谷歌官方Android应用架构库——LiveData

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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