android mvvm框架搭建,使用AndroidX + ViewModel + LiveData + DataBinding等组件搭建的MVVM快速开发框架...

18b8df8e789117823e37fd519c553d40.png

行车不规范,亲人两行泪

加班不规范,亲人两行泪

家有苏大强,亲人两行泪

TODO-MVVM:使用JetPack中的AndroidX + ViewModel + LiveData + DataBinding组件,同时使用RxJava2 + Retrofit2 + Glide等主流框架进行搭建

项目中 basicLib Module为搭建的基础框架可以拿来就用, sample Module为项目的使用案例

效果图

e13d5300df503b789a874cf009eed8e8.gif

2018年谷歌I/O大会发布了Jetpack,下面详细介绍一下这个Jetpack让大家对他不在陌生:

Android Jetpack是什么?

应用官方文档的介绍

Jetpack是 Android 软件组件的集合,使您可以更轻松地开发出色的Android应用。这些组件可帮助您遵循最佳做法,让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。

Jetpack包含与平台API解除捆绑的androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比Android平台的更新频率更高,以此确保您始终可以获取最新且最好的Jetpack组件版本。

Jetpack包括哪些东西?

Jetpack分四个模块分别是:基础(Foundation)、架构(Architecture)、行为(Behavior)、界面(UI)

7568867a42f9093fdf095e8de85ce67e.png

3fa920d88e93d431daa9ea6da33e5fec.png

这里同时还得介绍一下AndroidX,使用起来还是跟之前一样的只是包名更改了而已

AndroidX是对原始Android支持库的重大改进(v7、v4等......)

比如之前的 com.android.support:appcompat-v7 对应在AndroidX中的包为 androidx.appcompat:appcompat ;更多的包映射关系请前往官网查看Artifact mappings

废话不多说了这篇文章主要还是讲讲Jetpack中的架构组件(Architecture)

ViewModel

ViewModel 介绍

ViewModel类旨在存储和管理用户界面相关的数据生命周期中的方式,在ViewModel类中当屏幕旋转配置更改时允许数据能够被保存

ViewModel生命周期

0ec87825550708e1468ae44fb743ced9.png

0ec87825550708e1468ae44fb743ced9.png

下面是一个ViewModel + LiveData的使用介绍

布局内容

ViewModel存储数据 public class TestViewModel extends ViewModel {

private MutableLiveData data = new MutableLiveData<>();

public MutableLiveData getData() {

return data;

}

}

复制代码

UI监听数据改变进行数据展示 public class Test extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

final ActivityTestBinding dataBinding = DataBindingUtil.setContentView(this,

R.layout.activity_test);

TestViewModel model = ViewModelProviders.of(this).get(TestViewModel.class);

model.getData().observe(this, new Observer() {

@Override

public void onChanged(String s) {

dataBinding.tv.setText(s);

}

});

}

}

复制代码

对于上面这种写好,LiveData与DataBinding结合使用时提供了一个更加厉害的操作:数据可以直接与 xml 进行绑定

首先更改xml布局

修改UI处代码

public class Test extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

final ActivityTestBinding dataBinding = DataBindingUtil.setContentView(this,

R.layout.activity_test);

TestViewModel model = ViewModelProviders.of(this).get(TestViewModel.class);

dataBinding.setModel(model);

//数据改变,UI自动会更新

dataBinding.setLifecycleOwner(this);

}

}

复制代码

ViewModel在这里还有个妙用:Activity与Fragment进行数据共享

使用也很简单:ViewModel在创建的时候如果是同一个 Activity / Fragment 则会返回同一个实例,如下示例:

Activity中创建ViewModel LinkageViewModel viewModel = ViewModelProviders.of(this).get(LinkageViewModel.class);

复制代码

Activity中的Fragment创建ViewModel LinkageViewModel viewModel = ViewModelProviders.of(ge tActivity()).get(LinkageViewModel.class);

复制代码

当然还有一些其他的东西,欢迎前往——> GitHub项目地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值