Android网络请求超时处理

转载 2018年04月17日 13:48:18

转自:http://www.cnblogs.com/tony-yang-flutter/p/androidtimeout.html

以用户登录为例介绍用户访问网络时的请求超时处理的两种方法:

一. 使用android提供的工具类AsyncTask类,此类提供了一个AsyncTask.execute().get(timeout, unit);方法用于处理用户的请求超时的操作,可以设置请求超时的时间(timeout)以及请求时间的单位(unit)。

  例如:设置超时时间为2秒,单位为毫秒

try {
            AsyncTask(此处应该是它的实例化对象).execute().get(2000, TimeUnit.MILLISECONDS);
        } catch (InterruptedException e) {
                        e.printStackTrace();
        } catch (ExecutionException e) {
                                        e.printStackTrace();
        } catch (TimeoutException e) {
            //此处用来处理用户超时后的操作,例如:跳转界面,弹出提示框。
            //备注:此处不能直接进行界面操作,否则回报ANR异常。如果相处理界面操作,则和handler进行结合
        }        
二. 第二种方法相对来说就比较复杂了,你需要自定义请求超时操作

1)自定义一个TimerTask,用于向handler发送请求超时消息

class MyTimerTask extends TimerTask{

        @Override
        public void run() {
            handler.sendEmptyMessage(5000);
        }
        
    }

2)定义一个设置请求超时的方法,超时时间为5秒

复制代码
    private void checkTimeOut(){
        try{
            timer = new Timer();
            task = new MyTimerTask();
            timer.schedule(task, 5000);
        }catch(Exception e){
            Log.e("timer", e.getMessage());
        }
    }

3)开发登录线程

复制代码
    private class LoginThread extends Thread{
        @Override
        public void run() {
            try{
                try {
                    checkTimeOut();
                    //下面用于编写请求网络数据的代码
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                handler.sendEmptyMessage(5000);
            }catch(Exception e){
                Log.e("LoginThread", e.getMessage());
            }
        }
    }

4)在handler中处理请求超时或者请求成功的操作

复制代码
    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch(msg.what){
            case 5000:
                //关掉timer
                timer.cancel();
                //处理请求超时时要做的操作
                break;
            }
        };
    };


每天进步一点点!


商业数据分析与处理

商业数据分析与处理
  • 2015年08月11日 16:01

Android 网络请求超时处理方案

转自:http://www.cnblogs.com/tony-yang-flutter/p/androidtimeout.html 以用户登录为例介绍用户访问网络时的请求超时处理的两种方法:...
  • langjian2012
  • langjian2012
  • 2015-08-28 22:05:28
  • 6747

android网络编程及网络超时处理

android网络编程及网络超时处理 本文是收录的两篇关于这方面的文章 Android超时机制的处理   由于手机端应用的响应,与当时的无线通信网络状况有很大的关联。而通信网络往往具有...
  • huwei2003
  • huwei2003
  • 2016-08-19 14:21:06
  • 4644

android Http 网络超时,怎么设置

给你一段代码看看,这是我在一个类里的方法,在异步中调用这个方法,在handler里取得返回值,进行处理。 public static String addCustDetails(TCUSTINFOD...
  • rongwenbin
  • rongwenbin
  • 2014-10-19 16:04:53
  • 802

android retrofit设置网络请求超时时间

今天开发的时候遇到一个网络请求超时的问题,后台处理是成功的,但是移动端返回的总是提示请求超时,在设置了retrofit请求超时的时间延长以后,就可以请求成功了,下面是配置的方法: priva...
  • yann02
  • yann02
  • 2018-02-01 17:41:15
  • 264

android HttpPost请求连接服务器端的实例

  • 2014年04月22日 20:39
  • 1.28MB
  • 下载

ajax请求超时处理

ajax请求时有个参数可以借鉴一下 var ajaxTimeOut = $.ajax({   url:'', //请求的URL   timeout : 1000, //超时时间设置,单位毫秒   t...
  • hu_mouse
  • hu_mouse
  • 2015-08-25 09:39:59
  • 6644

如何快速解决Java网络编程设置请求超时,还不快加入收藏!

一 、引言 随着企业系统的发展,应用多采用分布式结构,严重依赖于网络的稳定性。但由于网络天生的不稳定性,系统开发过程中需要考虑网络不稳定情况下如何保证应用的鲁棒性。 设置网络超时是其中一种保证应用健...
  • longdan3105
  • longdan3105
  • 2017-12-29 11:49:31
  • 311

Ajax网络请求超时处理-timeout

1、相关链接:http://blog.csdn.net/zrcj0706/article/details/786399802、实现效果当网络请求时间超过2秒,则弹出提示框:提示网络不稳定具体效果如下图...
  • zrcj0706
  • zrcj0706
  • 2018-02-27 17:44:02
  • 119

设置 AFNetworking 网络请求的超时时间

设置AFNetworking网络请求的超时时间
  • a12a33
  • a12a33
  • 2015-08-11 11:47:40
  • 1797
收藏助手
不良信息举报
您举报文章:Android网络请求超时处理
举报原因:
原因补充:

(最多只允许输入30个字)