请留意,addObserver() 办法将 LifecycleOwner 作为第一个参数传递。如许做表示该不雅察者应当绑定到 Lifecycle,意思是:
- 如不雅 Lifecycle 不处于晃荡状况(STARTED 或 RESUMED),即使该值产生变更也不会调用不雅察者。
- 如不雅 Lifecycle 被烧毁,那么主动移除不雅察者。
LiveData 是生命周期感知的事实给我们供给了一个新的可能:可以在多个 activity,fragment 等之间共享它。为了保持实例简单,可以将其作为单例,如下所示:
- public class LocationLiveData extends LiveData<Location> {
- private static LocationLiveData sInstance;
- private LocationManager locationManager;
- @MainThread
- public static LocationLiveData get(Context context) {
- if (sInstance == null) {
- sInstance = new LocationLiveData(context.getApplicationContext());
- }
- return sInstance;
- }
- private SimpleLocationListener listener = new SimpleLocationListener() {
- @Override
- public void onLocationChanged(Location location) {
- setValue(location);
- }
- };
- private 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);
- }
- }
如今 fragment 可以像下面如许应用它:
- public class MyFragment extends LifecycleFragment {
- public void onActivityCreated (Bundle savedInstanceState) {
- Util.checkUserStatus(result -> {
推荐阅读
这些马脚让进击者可破解口令获取Windows凭证。Preempt合营开创人兼CEO阿基特·桑切蒂称:“威逼态势持续成长,凸显出现有安然协定中存在的马脚,这2个马脚也没什么不合。NTLM让公司企业和>>>详细阅读
本文标题:谷歌官方Android应用架构库——LiveData
地址:http://www.17bianji.com/lsqh/36284.html
1/2 1

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