zoukankan      html  css  js  c++  java
  • 版本检测

    /**
         * 检测版本号
         */
        private void checkVersion() {
            new Thread(){
                public void run() {
                    //发送请求获取数据,参数则为请求json的链接地址
                    //http://192.168.13.99:8080/update74.json    测试阶段不是最优
                    //仅限于模拟器访问电脑tomcat
                    Message msg = Message.obtain();
                    long startTime = System.currentTimeMillis();
                    try {
                        //1,封装url地址
                        URL url = new URL("http://10.0.2.2:8080/update74.json");
                        //2,开启一个链接
                        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                        //3,设置常见请求参数(请求头)
                        
                        //请求超时
                        connection.setConnectTimeout(2000);
                        //读取超时
                        connection.setReadTimeout(2000);
                        
                        //默认就是get请求方式,
    //                    connection.setRequestMethod("POST");
                        
                        //4,获取请求成功响应码
                        if(connection.getResponseCode() == 200){
                            //5,以流的形式,将数据获取下来
                            InputStream is = connection.getInputStream();
                            //6,将流转换成字符串(工具类封装)
                            String json = StreamUtil.streamToString(is);
                            Log.i(tag, json);
                            //7,json解析
                            JSONObject jsonObject = new JSONObject(json);
                            
                            //debug调试,解决问题
                            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);
                            
                            //8,比对版本号(服务器版本号>本地版本号,提示用户更新)
                            if(mLocalVersionCode<Integer.parseInt(versionCode)){
                                //提示用户更新,弹出对话框(UI),消息机制
                                msg.what = UPDATE_VERSION;
                            }else{
                                //进入应用程序主界面
                                msg.what = ENTER_HOME;
                            }
                        }
                    }catch(MalformedURLException e) {
                        e.printStackTrace();
                        msg.what = URL_ERROR;
                    }catch (IOException e) {
                        e.printStackTrace();
                        msg.what = IO_ERROR;
                    } catch (JSONException e) {
                        e.printStackTrace();
                        msg.what = JSON_ERROR;
                    }finally{
                        //指定睡眠时间,请求网络的时长超过4秒则不做处理
                        //请求网络的时长小于4秒,强制让其睡眠满4秒钟
                        long endTime = System.currentTimeMillis();
                        if(endTime-startTime<4000){
                            try {
                                Thread.sleep(4000-(endTime-startTime));
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        mHandler.sendMessage(msg);
                    }
                };
            }.start();
            
            /*new Thread(new Runnable() {
                @Override
                public void run() {
                    
                }
            });*/
        }
    private Handler mHandler = new Handler(){
            @Override
            //alt+ctrl+向下箭头,向下拷贝相同代码
            public void handleMessage(android.os.Message msg) {
                switch (msg.what) {
                case UPDATE_VERSION:
                    //弹出对话框,提示用户更新
                    showUpdateDialog();
                    break;
                case ENTER_HOME:
                    //进入应用程序主界面,activity跳转过程
                    enterHome();
                    break;
                case URL_ERROR:
                    ToastUtil.show(getApplicationContext(), "url异常");
                    enterHome();
                    break;
                case IO_ERROR:
                    ToastUtil.show(getApplicationContext(), "读取异常");
                    enterHome();
                    break;
                case JSON_ERROR:
                    ToastUtil.show(getApplicationContext(), "json解析异常");
                    enterHome();
                    break;
                }
            }
        };
        /**
         * 弹出对话框,提示用户更新
         */
        protected void showUpdateDialog() {
            //对话框,是依赖于activity存在的
            Builder builder = new AlertDialog.Builder(this);
            //设置左上角图标
            builder.setIcon(R.drawable.ic_launcher);
            builder.setTitle("版本更新");
            //设置描述内容
            builder.setMessage(mVersionDes);
            
            //积极按钮,立即更新
            builder.setPositiveButton("立即更新", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //下载apk,apk链接地址,downloadUrl
                    downloadApk();
                }
            });
            
            builder.setNegativeButton("稍后再说", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //取消对话框,进入主界面
                    enterHome();
                }
            });
            
            //点击取消事件监听
            builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
                @Override
                public void onCancel(DialogInterface dialog) {
                    //即使用户点击取消,也需要让其进入应用程序主界面
                    enterHome();
                    dialog.dismiss();
                }
            });
            
            builder.show();
        }
      /**
         * 进入应用程序主界面
         */
        protected void enterHome() {
            Intent intent = new Intent(this,HomeActivity.class);
            startActivity(intent);
            //在开启一个新的界面后,将导航界面关闭(导航界面只可见一次)
            finish();
        }
  • 相关阅读:
    Bullet 学习笔记之 btPersistentManifold 及 btManifoldPoint
    Bullet 学习笔记之 btCollisionWorld::performDiscreteCollisionDetection
    Bullet 学习笔记之 btCollisionWorld
    hdu 6617
    codeforces 1247 E
    GYM 101174 A
    GYM 100714 G
    codeforces 1239 C
    牛客挑战赛33D
    codeforces 1238 E
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6203349.html
Copyright © 2011-2022 走看看