高德天气应用开发之七:android Xutils3实现文件下载(高德天气城市配置)

版权声明:本文为博主原创文章,未经允许不得转载,如有问题,欢迎指正,谢谢! https://blog.csdn.net/cbk861110/article/details/86666573

【版权说明】

1. 请支持原创,转载请注明出处:https://blog.csdn.net/cbk861110/article/details/86665564

2. 项目源码&框架说明&技术更新实现 请移步:https://github.com/caobaokang419/WeatherApp(欢迎Github Fork&Star,框架和技术实现不妥之处,请帮忙指正),谢谢!
--------------------- 

基于MVVM框架的高德天气APP:


 

功能点实现说明:

一、文件下载场景:

高德天气配置文件,通过应用自行下载,并完成后续解析部分,实现城市配置文件自动更新功能;

二、下载实现(采用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,框架和技术实现不妥之处,请帮忙指正),谢谢!

猜你喜欢

转载自blog.csdn.net/cbk861110/article/details/86666573