天天看点

Android 轻松实现后台搭建+APP版本更新

android 轻松实现后台搭建+app版本更新

看完本文,您可以学到:

1.版本更新的方法

2.与后台的交互

3.android中handler的使用

4.android中progressdialog的使用

话不多说,先来看看效果图:

一、大致思路阐述

首先,我们要有一个可以被手机访问的后台。

这里有两种方法,在调试的时候我们可以利用手机和笔记本连到同一个局域网的方式,在电脑上开启个类似php或者javaee一样样的后台服务。

但是对于没有相关后台开发经验的朋友,这里有一种更好的方式:利用github等免费空间来实现。详细请戳我的另一篇博文利用github建立你的个人网站 。

ok,有了存放资源的后台,我们要放点什么东西呢?很简单,一个包含最新版本信息的update.txt文件和一个.apk文件足矣!

txt文件里写啥?看下我的例子:

解释一下: &是分隔符,用于手机端获取到信息后的分割。1.3代表着最新版本号,之后的是新版本的描述,最后的是新版本apk的下载地址(这里我用了局域网)。一开始的是啥呢?我当时在试验的时候,在开头并没有加额外信息,即以1.3开头,实验之后,发现手机端获取到txt文本信息后不能正确解析,原因我觉得是因为txt文件的开头包含有一些自带的字符,手机解析时会有问题。(感兴趣的朋友可以去深究,还望不吝赐教!)

ok,有了新版本的信息,我们要怎么做?

我们要获取到最新的版本号,然后与当前app的版本号进行对比。如果低于最新版本,就到下载地址中去下载。

二、详细代码解释

首先,新建一个updateinfo类,用来与update.txt的内容对应,这个很简单:

[java] view plaincopy

package com.example.appupdatedemo;

public class updateinfo

{

}

然后,写一个类去获取更新的信息,即我们的update.txt文件:

updateinfoservice:

import java.io.bufferedreader;

import java.io.inputstreamreader;

import java.net.httpurlconnection;

import java.net.url;

import android.content.context;

public class updateinfoservice {

这里获取文件的方法是先创建一个httpurlconnection,再获取输入流。细心的朋友可能注意到其中有个类,叫getserverurl,这个类是用来存放后台地址信息的:

/**

获取服务器ip地址

*/

public class getserverurl{

ok,到了这一步,准备工作都做完了,接下来只剩一个类了!即我们的mainacticity,一共一百多行,我们分几部分来讲。

第一部分代码,做的工作是获取版本更新信息。

public class mainactivity extends activity {

这里我们用到了new thread+ handler的方式去进行异步加载版本信息,主要是因为在安卓中要把耗时任务放在非主线程中执行,否则会造成阻塞,抛出无响应异常。还有另外的实现方式是安卓封装的asynctask,具体可以参考这篇博文:android asynctask详解。

第二部分,判断是否是最新版本,如果不是,跳出对话框选择是否更新:

private void showupdatedialog() {

private boolean isneedupdate() {

// 获取当前版本的版本号

private string getversion() {

这段里面要注意的是怎么获取当前版本,方法是使用packagemanager提供的getpackageinfo方法,返回的是manifest文件中的版本号。其他的代码挺简单,注释也挺全的。如果有问题,欢迎留言。

接下来是最后一部分,下载文件。

//安装文件,一般固定写法

这一段主要是利用progressdialog在下载的时候实时更新进度,主要利用的是一个字节数组的缓冲区。即每次获取到的内容填满缓冲区后就写入到本地本件中。这里我把缓冲区的大小设置为10个字节(1024会比较好),理由是因为在同一个局域网中速度特别快,刷一下就下载完了,看不出进度条效果,缓冲区调小点就ok了。