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

每当你认为在 ViewModel 中须要一个 Lifecycle 类时,转换可能是解决筹划。
该机制许可以较少的资本根据须要惰性运算来创建 LiveData。ViewModel 可以轻松获取到 LiveData 并在它们膳绫擎定义转换规矩。
LiveData 是一个数据持有者类,它持有一个值并许可不雅察该值。不合于通俗的可不雅察者,LiveData 遵守应用法度榜样组件的生命周期,以便 Observer 可以指定一个其应当遵守的 Lifecycle。
如不雅 Observer 的 Lifecycle 处于 STARTED 或 RESUMED 状况,LiveData 会认为 Observer 处于晃荡状况。
- public class LocationLiveData extends LiveData<Location> {
- private LocationManager locationManager;
- private SimpleLocationListener listener = new SimpleLocationListener() {
- @Override
- public void onLocationChanged(Location location) {
- setValue(location);
- }
- };
- public LocationLiveData(Context context) {
- locationManager = (LocationManager) context.getSystemService(
- Context.LOCATION_SERVICE);
- }
- @Override
- protected void onActive() {
- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
- }
- @Override
- protected void onInactive() {
- locationManager.removeUpdates(listener);
- }
- }
Location 监听的实现有 3 个重要部分:
- onActive():当 LiveData 有一个处于晃荡状况的不雅察者时该办法被调用,这意味着须要开端大年夜设备不雅察地位更新。
- vonInactive():当 LiveData 没有任何处于晃荡状况的不雅察者时该办法被调用。因为没有不雅察者在监听,所以没有来由保持与 LocationManager 的连接。这是异常重要的,因为保持连接会明显消费电量并且没有任何好处。
- setValue():调用该办法更新 LiveData 实例的值,并将此变革通知给处于晃荡状况的不雅察者。
可以像下面如许应用新的 LocationLiveData:
- public class MyFragment extends LifecycleFragment {
- public void onActivityCreated (Bundle savedInstanceState) {
- LiveData<Location> myLocationListener = ...;
- Util.checkUserStatus(result -> {
- if (result) {
- myLocationListener.addObserver(this, location -> {
- //
推荐阅读
这些马脚让进击者可破解口令获取Windows凭证。Preempt合营开创人兼CEO阿基特·桑切蒂称:“威逼态势持续成长,凸显出现有安然协定中存在的马脚,这2个马脚也没什么不合。NTLM让公司企业和>>>详细阅读
本文标题:谷歌官方Android应用架构库——LiveData
地址:http://www.17bianji.com/lsqh/36284.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示