基于Google Android JetPack官方建议的框架来设计
- 实现了Activity与Fragment的创建
- 创建了FuturesViewModel,RealTimeViewModel来获取Reposiory中的数据
- 数据来源:聚合api提供的天气接口
多次创建LiveData以及LiveData生成位置不对导致多次获取数据不能存储的LiveData中
创建LiveData单例模式,并且每次获取数据需要使用postVlaue将任务发布到主线程。
注意: 每次必须要先创建LiveData然后在获取数据并postValue
setValue与postValue的区别:
在主线程中setValue的优先级比postValue的优先级高,如果在主线程中先执行setValue
- 将两个ViewModel整合为一个ViewModel
- 创建了WeatherRepository(天气仓库)
- 将获取WebService的方法迁移到WeatherRepository,创建WeatherRepository单例这样可以更方便的获取连接仓库
- 设置了状态提示,防止因没有数据而造成闪退,使用户知道为什么获取不到数据
Toast的连续显示问题,当有一个Toast还未显示完时,另一个Toast又需要马上显示来提示用户
weatherViewModel.getStatusInfo ().observe ( WeatherFragment.this, new Observer<String> () {
@SuppressLint("ShowToast")
@Override
public void onChanged(String s) {
if (toast == null){
toast = Toast.makeText ( getContext (),s,Toast.LENGTH_SHORT );
}else {
toast.setText ( s );
}
toast.show ();
}
} );
如果当前Toast不为空则将需要显示的内容通过上一个Toast显示出来