Skip to content

sharyuke/AndroidUpdateManager

Repository files navigation

#安卓自定义更新组件的介绍 Android UpdateManager Introduce

6/20/2015 10:19:08 PM

view


######1.2.8 release note 不再移除监听器,单设置的监听器一定要记得手动移除

######1.2.7 release note 更新下载进度框界面,显示可读长度 kb, mb gb等,重命名了监听器

######1.2.5 release note listeners should not more than 5 in case memory leak 监听器不能超过5个,防止内存泄漏 , 修改监听器方法错误

######1.2.4 release note 当处于下载状态时,不能删除文件

######1.2.1 release note 修改下载状态变化和下载进度变化的监听器的设置集合。增加remove监听器方法

updateManager.removeOnUpdateStatus(this);
updateManager.removeUpdateDownloadProgress(this);

######1.2.0 release note fix progress bug

######1.1.9 release note 增加自定义dialog的style

         updateManager.setDialogTheme(R.style.Base_Theme_AppCompat_Dialog_Alert);

######1.1.8 release note 增加回调的方式来实现下载进度实时更新

         updateManager.setOnUpdateStatus(new UpdateManager.OnUpdateStatus() {
                @Override
                public void onStatusChanged(UpdateManager.Status status) {

            }
        });

####实例化Update

updateManager = UpdateManager.getInstance()
            .initUpdateManager(api.checkVersion()
                            .subscribeOn(Schedulers.io())
                            .observeOn(AndroidSchedulers.mainThread()),
                    UPDATE_DOWN_LOAD_URL,
                    BuildConfig.VERSION_CODE);

UpdateManager有多种实例化方法,不过有3个参数是必须的,

1、一个Observable<? extends ResUpdateModel>对象,用来进行检查更新的网络请求。ResUpdateModel接口需要实现2个方法, 分别得到版本名字versionName String,和版本码versionCode int。

2、一个下载app的地址链接,用来更新App之用 String。可以在UpdateManager实例化之后,任何地方重新设置下载链接

3、当前app的版本码 int。

4、其他参数

bus appName
基于otto,用来获取下载进度 用来缓存apk的文件名字,默认app

####检查更新

  updateManager.checkUpdate(getActivity());

如果想要静默检查更新(即,不弹出,“当前App是最新版本”和“检查更新连接服务器失败”),用于app启动时候的检查更新,添加一个参数即可

  updateManager.checkUpdate(getActivity(),false);

自定义下载链接

  updateManager.checkUpdate(getActivity(),downloadUrl);

####实时获取下载进度

实例化一个Bus(com.squareup.otto)对象,并且传递给updateManager。 在当前类,注册public void Registe(Object object);

mBus.register(this);

然后写一个公开的方法,并且注解@Subscribe (注意选择com.squareup.otto包内的),并且接受一个DownLoadProgress对象

@Subscribe
public void updateDownloadProgress(DownLoadProgress progress) {
    
}

DownLoadProgress 接口,有2个方法,获取最大文件长度,另外一个是获取当前的进度,每次数据更新(2次更新时间不会低于100毫秒),就会发送携带最新信息的DownLoadProgress对象。在这里进行下载进度的更新。发送的信息是在主线程完成的,可以直接操作UI。

####其他方法


*删除缓存文件

updateManager带有下载文件缓存功能,第一次下载成功了,第二次相同的版本直接跳转安装,如果有相同的名字,但是版本不一样, 就需要删除缓存文件然后再更新

public void deleteCacheFiles() {
    FileHelper.deleteFile(files);
}

*直接下载app

public void downLoadDebug(Activity activity, String url, String versionName) {
    download(activity, url, versionName);
}

####使用

UpdateManager 已经上传到Jcenter 在android studio 的 build.gradle 里面添加Jcenter的依赖

compile 'com.android.support:appcompat-v7:22.2.0'
compile 'io.reactivex:rxandroid:0.24.0'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.jakewharton.timber:timber:3.1.0'
compile 'com.sharyuke:apptool:1.2.7@aar'

或者直接下载aar

About

android update manager : )

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages