mainActivity.java 和 SettingRecyclerAdapter.java 这两个类需要根据从服务端获取到的APK的版本信息去判断是否需要弹出更新的对话框,也就是需要从服务器获取到版本信息后才能进行后续的版本判断、弹出升级对话框的操作。有一个明显的先后顺序:从服务端返回的信息之后本地判断完成后再进行后续操作。
mainActivity.java
//应用初始化的OnCreate()方法中判断升级,设置联系方式
AppInfoFromServer.getIns().setSuccessGetInfoListener(new AppInfoFromServer.ISuccessGetInfoListener() {
@Override
public void onGetUpgradeInfo(String serverVersionCode, String url) {
Long localVersionCode = Long.valueOf(Utility.getVersionCode(IcFunApplication.getInstance()));
//判断升级,必须要等从服务端获取到返回的版本号后,和本地的版本号进行对比
showUpgradeDialog(Long.valueOf(serverVersionCode) > localVersionCode, url);
}
});
//请求办事情,办完事情会有上面的回调
AppInfoFromServer.getIns().getAppInfoFromServer();
SettingRecyclerAdatapter.java
case SettingPage.UPGRADE:
//手动触动判断升级,在onClick() 方法中手动触发,设置联系方式
Long localVersionCode = Long.valueOf(Utility.getVersionCode(mActivity));
AppInfoFromServer.getIns().setSuccessGetInfoListener(new AppInfoFromServer.ISuccessGetInfoListener() {
@Override
public void onGetUpgradeInfo(String serverVersionCode, String url) {
//判断升级,必须要等从服务端获取到返回的版本号后,和本地的版本号进行对比
showUpgradeDialog(Long.valueOf(serverVersionCode) > localVersionCode, url);
}
});
//请求办事情,办完事情会有上面的回调
AppInfoFromServer.getIns().getAppInfoFromServer();
break;
AppInfoFromServer.java
public interface ISuccessGetInfoListener {
void onGetUpgradeInfo(String serverVersinCode, String url);
}
public void setSuccessGetInfoListener(ISuccessGetInfoListener iSuccessGetInfoListener) {
this.mISuccessGetInfoListener = iSuccessGetInfoListener;
}
public void getAppInfoFromServer() {
GameAPI gameAPI = KHttpWorker.ins().createHttpService(GameAPI.API_HOST, GameAPI.class);
Observable observable = gameAPI.getAppVersion();
observable.subscribeOn(Schedulers.io())
.subscribe(new Consumer() {
@Override
public void accept(JsonObject jsonObject) throws Exception {
if (jsonObject == null) {
return;
}
JsonObject data = jsonObject.get("data").getAsJsonObject();
String versioncode = data.get("versioncode").getAsString();
String downLoadUrl = data.get("url").getAsString();
//另外一方请求办事情,本例是从服务端获取数据,完成后,将数据返回给请求方使用
if (mISuccessGetInfoListener != null) {
mISuccessGetInfoListener.onGetUpgradeInfo(versioncode, downLoadUrl);
}
}
}, new Consumer() {
@Override
public void accept(Throwable throwable) throws Exception {
}
});
}