一、前奏 java
常常有这样一个需求,就是开发安卓项目时,要升级后续版本。实现方式有不少种,大多的实现步骤就是放一份版本信息在服务器端,而后须要检测的时候,就拿本地apk的版本跟服务器的版本对比,若是不是最新的,就提示用户进行升级操做。需求来了,升级操做就须要咱们先下载apk,而后调用安卓API进行自动替换安装。咱们的这个update模块就是提供给你自动下载和安装一步到位。固然是否须要升级的版本比较,仍是得你本身作。 git
二、废话少说先贴上使用方法 程序员
UpdateManager updateManager = new UpdateManager(Main.this); updateManager.setUpdateCancelListener(new UpdateCancelListener() { @Override public void updateCancel(CancelEvent cancelEvent) { notifyCanGotoLoginActivity(); } }); updateManager.setUpdateOkListener(new UpdateOkListener() { @Override public boolean updateOk() { return true;//表示操做更新 } }); updateManager.doUpdate(downloadUrl, Constants.UPDATE_APK_PATH + Constants.APK_NAME, updateText);
对,就是这么简单。那个doUpdate方法的第一参数表示你要下载的apk网络地址。第二个参数表示你下载下来的apk的保存路径。第三个参数,顾名思义,就是在提示用户下载的提示用语。 github
其中上面的执行结果是,跳出一个对象选择框,这个选择框会提示用户是否进行更新。若是用户选择取消,就会被UpdateCancelListener事件监听到,上面就是跳转去登陆界面,这里逻辑本身写。若是用户点击了肯定,就会被UpdateOkListener事件监听到。UpdateOkListener中的updateOk方法有个返回结果须要你返回。你能够在这个事件里作些判断收尾操做。若是你返回true,那么就系统就会执行更新操做。接下来的事情就不用你管了。若是你返回false,系统就不会去执行更新操做。那你就能够本身跳转到相应界面去便可。 服务器
三、上面的doUpdate方法调用会提示用户是否下载安装。若是不想跳出对话框提示用户是否进行下载安装。而直接去下载安装,就能够直接这样调用: 网络
UpdateManager updateManager = new UpdateManager(Main.this); updateManager.doDownloadInstall(downloadUrl, Constants.UPDATE_APK_PATH + Constants.APK_NAME, updateText);两个参数跟上面的同样。顺便说一句,想使用更详细的配置,可使用UpdateConfig对象做为参数传入。
四、特别注意 app
这个更新工具中使用了Handler的消息机制。而安卓默认除开UI线程,其余线程是不开启这个消息机制的。因此,在是使用先后开启一下。Looper.prepare();...中间的代码就是上面的代码...Looper.loop();你懂的吧。Looper.loop();后面的代码不会被立刻执行这个你应该知道的吧,因此要当心哈。 ide
源码在github上有:https://github.com/bigapple520520/bigapple 也能够加QQ群:159392353不过我也是个苦逼的程序员,如今群里没人,就算加了我也只是偶尔回复一下,上班时间没有过多时间啊。固然有好的建议咱们仍是能够交流一下。非诚勿扰哈。 工具