新建你的第一个Jetpack学习Demo
新建一个项目,关键点如图(选择Fragment+ViewModel):
新建项目后,再看目录结构,如下图:
自动生成了Activity+Fragment+ViewModel
接着,我们再看一下它的gradle:
新建的项目中自动集成了Jetpack库中用于管理Activity和Fragment生命周期的Lifecycles组件;
关于Lifecycles组件,文档中是这样说的:
接下来,我们通过代码来验证一下lifecycle的作用:
第一步:创建一个生命周期观察者
//创建生命周期观察者
public class MyObserver implements LifecycleObserver {
private static final String TAG = "MyObserver";
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void onCreate() {
Log.w(TAG, "onCreate: ");
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart() {
Log.w(TAG, "onStart: ");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume() {
Log.w(TAG, "onResume: ");
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void onPause() {
Log.w(TAG, "onPause: ");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onStop() {
Log.w(TAG, "onStop: ");
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroy() {
Log.w(TAG, "onDestroy: ");
}
}
第二步:
运行Demo,我们看得到,生命周期被监听了:
至此,lifecycle的简单介绍及使用到这里。再看ViewModel是用来干什么的:
ViewModel
辅助程序类,该类负责为界面准备数据。 在配置更改期间会自动保留 ViewModel 对象,以便它们存储的数据立即可供下一个 Activity 或 Fragment 实例使用。例如,如果您需要在应用中显示用户列表,请确保将获取和保留该用户列表的责任分配给 ViewModel,而不是 Activity 或 Fragment,如以下示例代码所示:
说白了,就是在ViewModel中对接口进行请求,获取到我们想要的数据;
在Fragment 中适时的实的实现上面的代码;
LiveData是干什么的?
由于LiveData和MutableLiveData都是一个概念的东西(只是作用范围不同)所以就不重复解释了,直接理解LiveData就可以明白MutableLiveData
直接理解LiveData的字面意思是前台数据,其实这其实是很准确的表达.下面我们来说说LiveData的几个特征:
1.首先LiveData其实与数据实体类(POJO类)是一样的东西,它负责暂存数据.
2.其次LiveData其实也是一个观察者模式的数据实体类,它可以跟它注册的观察者回调数据是否已经更新.
3.LiveData还能知晓它绑定的Activity或者Fragment的生命周期,它只会给前台活动的activity回调(这个很厉害).这样你可以放心的在它的回调方法里直接将数据添加到View,而不用担心会不会报错.(你也可以不用费心费力判断Fragment是否还存活)
LiveData与MutableLiveData区别
LiveData与MutableLiveData的其实在概念上是一模一样的.唯一几个的区别如下:
1.MutableLiveData的父类是LiveData
2.LiveData在实体类里可以通知指定某个字段的数据更新.
3.MutableLiveData则是完全是整个实体类或者数据类型变化后才通知.不会细节到某个字段
今天就先写到这里,后续陆续对其详细的用法进行介绍;