Skip to content

LillteZheng/AppUpdate

Repository files navigation

AppUpdate

开发中,我们常常会需要有apk升级,或者下载某个文件的问题。所以这里就写了个通用的文件下载的功能 ZDown。通过这篇文章你将看到

  • 常用框架 API 接口设计
  • 多线程下载原理与实现
  • 后台下载,界面退出之后,进来继续显示下载UI的原理

原理请参考这篇博客

效果图

配置

allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 

然后把 ZDloader 写上:

implementation 'com.github.LillteZheng:AppUpdate:v1.4' 

由于使用了 retrofit 和rxjava 等框架,所以,还需要在您的工程中添加以下关联,不然报错

 implementation 'io.reactivex.rxjava2:rxjava:2.2.4' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' implementation 'com.alibaba:fastjson:1.1.70.android' implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'org.ligboy.retrofit2:converter-fastjson-android:2.1.0' implementation 'com.squareup.retrofit2:converter-scalars:2.4.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' 

一、检查版本

 ZDown.checkWith(this) .url(jsonUrlTest) .get() .listener(new CheckListener<TestBean>() { @Override public void onCheck(final TestBean data) { Log.d(TAG, "zsr onCheck: " + data); } @Override public void onFail(String errorMsg) { Log.d(TAG, "zsr onFail: " + errorMsg); } }).check(); 

在listener中,可以把要转换的数据写上,如果不想转换成实体 bean,直接 String.class 就是返回原始的字符串了。 checkWith 还支持写入参数,使用 params(..) ,支持 get() 和 post()

在检查完版本,可以使用如下代码下载文件:

ZDown.with(MainActivity.this) .url(fileUrlTest) //线程设置为3 .threadCount(3) //ui刷新时间为 500 毫秒 .reFreshTime(500) //路径保存的路径,默认内部存 .filePath(mPath) //.allowBackDownload(true) 是否允许后台更新 // .fileName("test.apk") fileName默认根绝连接去截取,也可以自己写 .listener(new TaskListener() { @Override public void onSuccess(String filePath, String md5Msg) { ZCommontUitls.installApk(MainActivity.this,filePath); dialog.dismiss(); } @Override public void onDownloading(ZBean bean) { int progress = (int) bean.progress; updateBtn.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); progressBar.setProgress(progress); } @Override public void onFail(String errorMsg) { Log.d(TAG, "zsr onFail: " + errorMsg); dialog.dismiss(); } }).down(); 

二、混淆

内部已混淆,但如果使用 CheckListener 传入 bean 类,bean类需要自己混淆,eg:

-keep class com.zhengsr.appupdate.bean.** { *; } 

ZDown 为程序入口,它提供以下方法:

  • pause() 暂停任务
  • start() 开始任务
  • stopTask() 停止任务 ,如果你的apk更新不是在 activity 使用,建议在app退出的时候,使用该方法,防止内存泄漏
  • stopTaskAndDeleteCache() 停止任务,并删除已文件和数据库,当任务失败时,可以使用
  • isTaskExists() 任务是否存在
  • isRunning() 是否正在下载
  • updateListener() 从后台退回来,如果任务正在下载,直接更新接口就可以了,UI就不会乱了
  • deleteCacheAndStart() 当任务失败时,可以用这个把缓存文件和数据删了

About

APP 在线升级库,支持多线续传,后台更新等功能;APP online library upgrade, support multi-line continuation, background update and other functions

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages