详解Android中App的启动界面Splash的编写方法

2019-12-10 18:54:36刘景俊

在子线程中请求服务器的代码 checkup()方法

 

private void checkup() {
 new Thread() {
   public void run() {
     Message msg = Message.obtain();
     long startTime = System.currentTimeMillis();//启动该线程的系统时间
     try {
       //请求网络的代码
       URL url = new URL(getString(R.string.serverurl));
       HttpURLConnection conn = (HttpURLConnection) url
           .openConnection();
       conn.setRequestMethod("GET");//请求方法
       conn.setConnectTimeout(4000);//超时时间
       int code = conn.getResponseCode();//返回码200请求成功
       if (code == 200) {
         InputStream is = conn.getInputStream();
         String result = StreamTools.readFromStream(is);
         Log.i(TAG, "联网成功" + result);
         JSONObject obj = new JSONObject(result);//解析json字符串
         String version = (String) obj.get("version");//版本信息
         description = (String) obj.get("description");//描述信息
         apkurl = (String) obj.get("apkurl");
         if (getAppVersion().equals(version)) {
           msg.what = ENTER_HOME;
         } else {
           msg.what = SHOW_UPDATE_DIALOG;

         }
       }
     } catch (MalformedURLException e) {

       e.printStackTrace();
       msg.what = URL_ERROR;
     } catch (IOException e) {
       e.printStackTrace();
       msg.what = NETWORK_ERROR;
     } catch (JSONException e) {
       e.printStackTrace();
       msg.what = JSON_ERROR;
     } finally {
       handler.sendMessage(msg);
       long endTime = System.currentTimeMillis();//该线程执行完毕的时间
       long dTime = endTime-startTime;//该线程的阻塞时间
       if (dTime<3000) {
         try {
           Thread.sleep(3000-dTime);//若该线程的阻塞时间小于三秒继续睡眠到三秒
         } catch (InterruptedException e) {              
           e.printStackTrace();
         }
       }
     }
   }
 }.start();

 }
handler

 private Handler handler = new Handler() {

 @Override
 public void handleMessage(Message msg) {
   // TODO Auto-generated method stub
   super.handleMessage(msg);
   switch (msg.what) {
   case SHOW_UPDATE_DIALOG:
     showUpdateDialog();
     break;
   case ENTER_HOME:
     Toast.makeText(getApplicationContext(), "", 0).show();
     enterhome();
     break;
   case URL_ERROR:
     Toast.makeText(getApplicationContext(), "URL_ERROR", 0).show();
     enterhome();
     break;
   case NETWORK_ERROR:
     Toast.makeText(getApplicationContext(), "NETWORK_ERROR", 0).show();
     enterhome();
     break;

   case JSON_ERROR:
     Toast.makeText(getApplicationContext(), "JSON_ERROR", 0).show();
     enterhome();
     break;
   }
 }
};