最近公司客户端做了升级功能,感觉学到了不少东西,因此做下记录,以备后续查看。
检查版本更新可以放在splash页面,也可以放在主页面。
上图是更新app的思维导图,画的不是很好,大家能看懂就好哈。 我在网上找了一个更加清楚的流程图,大家可以看下这个,说的更详细。
检查更新的步骤大体分为以下三步:
1.首先判断网络是否连通,如果网络连通则走更新app线程,否则跳过更新app线程。
2.更新线程首先获取服务器app版本号,如果版本号大于本地版本号时,提示用户更新本地app版本。
3.更新版本时,首先从服务器下载app最新版本到手机,接着安装替换旧版本。
(1)判断网络是否连通,且不在wifi状态下时提示用户是否用流量下载更新
public static int getNetworkState(Context context) {
//得到连接管理器对象
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return NETWORK_WIFI;
} else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return NETWORK_MOBILE;
}
} else {
return NETWORK_NONE;
}
return NETWORK_NONE;
}
(2)网络请求服务器获取服务器版本号,和本地版本号做对比
请求网络工具类:
public class RequestServer {
private static String TAG = "url";
public static String RequestServer(String urlString) {
BufferedReader br = null;
HttpURLConnection conn = null;
StringBuilder sb = new StringBuilder();
try {
URL reqURL = new URL(urlString);
conn = (HttpURLConnection) reqURL.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(10000);
//打开网络通讯输入流
int code = conn.getResponseCode();
LogUtil.e("code","code:"+code);
if (code != 200){
return null;
}