【版权说明】
1. 请支持原创,转载请注明出处:https://blog.csdn.net/cbk861110/article/details/86665564
2. 项目源码&框架说明&技术更新实现 请移步:https://github.com/caobaokang419/WeatherApp(欢迎Github Fork&Star,框架和技术实现不妥之处,请帮忙指正),谢谢!
---------------------
基于MVVM框架的高德天气APP:
功能点实现说明:
- 配置文件下载:借助Xutils3,下载并存储高德天气城市配置文件,并需先动态申请存储权限;
一、文件下载场景:
高德天气配置文件,通过应用自行下载,并完成后续解析部分,实现城市配置文件自动更新功能;
二、下载实现(采用xUtils3框架):
- Xutils3 使用教程:国内开源框架,封装实现文件下载&断点续传&DB访问&ImageLoader等场景
1. 下载地址:
//高德城市配置表下载地址
public static final String AMAP_CITY_CONFIG_FILE_URL = "http://a.amap.com/lbs/static/file/AMap_adcode_citycode.xlsx.zip";
2. xUtils3 jar集成:
implementation 'org.xutils:xutils:3.3.4'
3. 申明权限并提前动态申请权限:
备注:权限申请参照:Android 高德天气移动应用开发之五:应用权限动态申请 https://blog.csdn.net/cbk861110/article/details/86666321
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
4. 下载实现XUtilsDownloadImpl.java:
/**
* Created by GaryCao on 2019/01/12.
*/
public class XUtilsDownloadImpl implements IDownload {
private IDownloadListener mDownloadListener;
private Callback.Cancelable mCancelable;
@Override
public void startDownload(String url, IDownloadListener iDownloadListener) {
mDownloadListener = iDownloadListener;
String fileName = XutilsFileUtil.getFileNameByUrl(url);
String filePath = Environment.getExternalStorageDirectory() + ApiContants.AMAP_CITY_CONFIG_DIRECTIONARY + fileName;
RequestParams params = new RequestParams(url);
params.setSaveFilePath(filePath);
params.setAutoRename(false);
params.setAutoResume(true);
params.setCancelFast(true);
/*需要先动态申请存储权限*/
mCancelable = x.http().post(params, new Callback.ProgressCallback<File>() {
@Override
public void onSuccess(File result) {
mDownloadListener.onSuccess();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
mDownloadListener.onFail();
}
@Override
public void onCancelled(CancelledException cex) {
mDownloadListener.onCancel();
}
@Override
public void onFinished() {
}
//网络请求之前回调
@Override
public void onWaiting() {
}
//网络请求开始的时候回调
@Override
public void onStarted() {
mDownloadListener.onStart();
}
@Override
public void onLoading(long total, long current, boolean isDownloading) {
mDownloadListener.onUpdate();
Log.i("JAVA", "current:" + current + ",total:" + total);
}
});
}
@Override
public void pauseDownload() {
//TODO
}
@Override
public void cancelDownload() {
mCancelable.cancel();
}
}
-------------------------------------------
文章目录(未完,待续):
一:android 应用子功能及移动框架总述 https://blog.csdn.net/cbk861110/article/details/86665564
二:android 高德天气API说明及城市天气查询实现 https://blog.csdn.net/cbk861110/article/details/86665655
三:android 自定义控件实现(ActionBar + PageIndicatorView) https://blog.csdn.net/cbk861110/article/details/86665790
四:android ViewPager实现左右页面滑动切换 https://blog.csdn.net/cbk861110/article/details/86665964
五:android应用权限动态申请 https://blog.csdn.net/cbk861110/article/details/86666321
六:android RecyclerView 封装及使用 https://blog.csdn.net/cbk861110/article/details/86666392
七:android Xutils3文件下载实现(高德天气城市配置) https://blog.csdn.net/cbk861110/article/details/86666573
八:android DiskLruCache 磁盘缓存 封装和使用 https://blog.csdn.net/cbk861110/article/details/86666664
九:android ThreadPoolExecutor线程池 封装及使用 https://blog.csdn.net/cbk861110/article/details/86667101
十:android 天气网络请求框架(retrofit2&okhttp3&Gson) 封装及使用 https://blog.csdn.net/cbk861110/article/details/86667375
十一:android RxAndroid(响应式编程) 异步网络请求实现 https://blog.csdn.net/cbk861110/article/details/86669178
十二:android DataBinding 数据和UI双向绑定实现 https://blog.csdn.net/cbk861110/article/details/86669708
十三:android room数据库 天气数据读写实现 https://blog.csdn.net/cbk861110/article/details/86670354
十四:android LiveData 使用方法(实现城市天气自动刷新) https://blog.csdn.net/cbk861110/article/details/86670531
十五:android ViewModel 使用方法 https://blog.csdn.net/cbk861110/article/details/86670703
十六:android 集成友盟消息推送机制(U-Push) https://blog.csdn.net/cbk861110/article/details/86683849
---------------------
【版权说明】
1. 请支持原创,转载请注明出处:https://blog.csdn.net/cbk861110/article/details/86665564
2. 项目源码&框架说明&技术更新实现 请移步:https://github.com/caobaokang419/WeatherApp(欢迎Github Fork&Star,框架和技术实现不妥之处,请帮忙指正),谢谢!