本文主要是介绍【Android入门】MVVM + LiveData 乱入的butterKnife,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. MVVM 架构
分工
- View 层对应 XML 中的静态UI、 Activity 和 Fragment 中设置显示内容的部分,不处理业务逻辑,不操作或处理数据
- ViewModel 层只处理业务逻辑和操作处理业务数据,不处理UI相关,简单的事件封装成 Command 处理(?),完成 View 与 Model 间的交互
- Model 层执行数据获取、储存、 监听状态变化等,是数据的实体模型
2. ViewMode 与 LiveData
以下示例代码搬运自android 开发者官方网站
ViewMode
- 按生命周期存储和管理与ui相关的数据,允许数据在配置更改(如屏幕旋转)中存活
- 通常情况下,关闭一个 activity 或 fragment 将同时销毁保存在其中的数据,ViewMode实现数据与UI进程同步创建或销毁
- 不必保证数据为可序列化
- 可以保持较大体积的数据
LiveData
可观测的数据持有类。它是生命周期感知的,确保 LiveData 只观测并更新处于活动生命周期状态的应用程序组件
MutableLiveData
LiveData 的子类,包含 postValue(T value) 方法和 setValue(T value) 方法,其中 setValue 在主线程中直接调用赋值, postValue 在子线程中将数据传递到主线程
public class MyViewModel extends ViewModel {private MutableLiveData<List<User>> users; //储存并修改数据public LiveData<List<User>> getUsers() {if (users == null) {users = new MutableLiveData<List<Users>>();loadUsers();}return users;}private void loadUsers() {// Do an asynchronous operation to fetch users.}
}public class MyActivity extends AppCompatActivity {public void onCreate(Bundle savedInstanceState) {// Create a ViewModel the first time the system calls an activity's onCreate() method.// Re-created activities receive the same MyViewModel instance created by the first activity.MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);model.getUsers().observe(this, new Observer<users> () {@Overridepublic void onChanged(@Nullable users entity) {// update UI}
这篇关于【Android入门】MVVM + LiveData 乱入的butterKnife的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!