1、解析json数据
解析json的代码很简单
Java代码
- JSONObject jsonObject = new JSONObject(json);
-
-
- String versionName = jsonObject.getString("versionName");
- mVersionDes = jsonObject.getString("versionDes");
- String versionCode = jsonObject.getString("versionCode");
- mDownloadUrl = jsonObject.getString("downloadUrl");
-
- Log.i(tag, versionName);
- Log.i(tag, mVersionDes);
- Log.i(tag, versionCode);
- Log.i(tag, mDownloadUrl);
2、使用消息机制发送不同类型消息
在获取服务器端json数据后,得到app的版本号,通过和客户端的版本号进行对比
Java代码
-
- if(mLocalVersionCode < Integer.parseInt(versionCode)) {
-
- msg.what = UPDATE_VERSION;
-
- } else {
-
- msg.what = ENTER_HOME;
- }
可以使用android的消息机制发送不同类型消息,可以参考《Android消息机制入门》
首先新建Handler
Java代码
- private Handler mHandler = new Handler() {
-
- public void handleMessage(android.os.Message msg) {
- switch (msg.what) {
- case UPDATE_VERSION:
-
-
- break;
- case ENTER_HOME:
-
- enterHome();
- break;
- case URL_ERROR:
-
- enterHome();
- break;
- case IO_ERROR:
-
- enterHome();
- break;
- case JSON_ERROR:
-
- enterHome();
- break;
- default:
- break;
- }
- };
- };
在定义一些出现状态码和出现异常时候的错误码:
Java代码
-
-
-
- protected static final int UPDATE_VERSION = 100;
-
-
-
- protected static final int ENTER_HOME = 101;
-
-
-
-
- protected static final int URL_ERROR = 102;
-
- protected static final int IO_ERROR = 103;
- protected static final int JSON_ERROR = 104;
接着实现enterHome()函数,作用:跳转到主界面
Java代码
-
-
-
- protected void enterHome() {
- Intent intent = new Intent(this, HomeActivity.class);
- startActivity(intent);
-
- finish();
- }
所以顺便新建一个HomeActivity.java
Java代码
- public class HomeActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_home);
- }
- }
当然还有一个activity_home.xml文件,随便加一点代码,先看到效果,后期再修改
XML/HTML代码
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
-
- <TextView
- android:text="HOMEACTIVITY"
- android:textSize="20sp"
- android:textColor="#000"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
-
- </LinearLayout>
运行项目后发现,当没有版本更新的时候,splash界面停留的时间很短,于是可以将指定睡眠时间,当请求网络的时长超过4秒则不做处理,请求网络的时长小于4秒,强制让其睡眠满4秒钟。这样splash界面会停留一会,然后跳转到HomeActivity界面
Java代码
-
-
- long endTime = System.currentTimeMillis();
- if(endTime - startTime < 4000) {
- try {
- Thread.sleep(4000 - (endTime - startTime));
- } catch (Exception e) {
-
- e.printStackTrace();
- }
- }
- mHandler.sendMessage(msg);
完整的代码如下: