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

1)使用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进行结合
}

2)第二种方法相对来说就比较复杂了,你需要自定义请求超时操作

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;
}
};
};

完毕

备注:此思路以及代码仅供大家参考,希望能够帮助到大家,如果谁有更好的想法或者解决方案,不要吝啬分享出来哦。哈哈。

Android 网络请求超时处理方案的更多相关文章

  1. xamarin android网络请求总结

    xamarin android中网络请求的框架非常多,在项目中使用的是第三方的一个网络请求框架restsharp,应该是github上.net网络请求最多star的框架,没有之一.这里就简单汇总了其他 ...

  2. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

    最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...

  3. [Swift]Alamofire:设置网络请求超时时间【timeout】的两种方式

    两种方式作用相同,是同一套代码的两种表述. 第一种方式:集聚. 直接设置成员属性(全局属性),这种方法不能灵活修改网络请求超时时间timeout. 声明为成员属性: // MARK: - 设置为全局变 ...

  4. Android 网络请求框架Retrofit

    Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...

  5. Android 网络请求及数据处理

    Android 网络请求: 1.Volley   http://blog.csdn.net/t12x3456/article/details/9221611 2.Android-Async-Http  ...

  6. Android 网络请求Retrofit + RxJava

    一.背景 经常看到项目用Retrofit+RxJava+RxAndroid的框架,为了看懂项目的结构.现在来了解一下,Retrofit: Retrofit是Square 公司开发的一款正对Androi ...

  7. Android网络请求心路历程

    HTTP请求&响应 既然说从入门级开始就说说Http请求包的结构.一次请求就是向目标服务器发送一串文本.什么样的文本?有下面结构的文本.HTTP请求包结构 例子: 1 2 3 4 5 6 7 ...

  8. android 网络请求Ⅰ

    本章讲述在android开发中,常用的网络请求操作.网络请求利用android基本的HttpURLConnection连接URL和开源网络请求包AsyncHttpClient.本次网络请求以调取天气接 ...

  9. Android网络请求框架

    本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...

随机推荐

  1. CentOS 7环境下Pycharm安装流程记录

    1.准备安装文件: 方法1: 使用内置火狐浏览器访问下载最新格式为tar.gz的压缩包 网址:https://www.jetbrains.com/pycharm/download/previous.h ...

  2. ionic 项目下 有时候发现select标签用动态数据绑定后点击出不来的情况

    一 第一种方法 在select 标签的父标签加上  data-tap-disabled=”true” 二 找到 ionic.bundle.js文件 下边有个方法 function tapIgnoreE ...

  3. <Android 基础(三十一)> ObjectAnimator

    简介 ObjectAnimator,是ValueAnimator的子类,支持利用目标视图的属性来实现动画效果.构造ObjectAnimator的时候,将会提取对应的参数来定义动画对象和对象属性.合适的 ...

  4. SQLServer 学习笔记之超详细基础SQL语句 Part 7

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 6------------------- 29 存储过程和触发器 存储过 ...

  5. cordova app强制横屏

    非常简单,只需要在config.xml里加上这行: <preference name="Orientation" value="landscape" /& ...

  6. flutter 监控返回键

    return new WillPopScope( child: Scaffold( body: new Center( child: new Column( children: <Widget& ...

  7. ionic左滑删除

    <html ng-app="ionicApp"> <head> <meta charset="utf-8"> <met ...

  8. Pycharm代码补齐功能中的图标的意思

    分清楚图标的意思就能更好的使用对应的方法.类,避免错误使用括号 PS:博主老是给属性方法加上括号   代表方法: 红色的m.f,   代表类变量: 黄色的f     之前遇到个属性方法: 好像是p,无 ...

  9. 10款jQuery文本高亮插件

    [编者按]本文作者为 Julian Motz,主要介绍十款 jQuery 文本高亮插件的现状.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 很多应用或网站都为用户提供搜索关键词的方法.为了 ...

  10. 【python】python之tuple元组

    tuple特性 python的tuple与列表类似,不同之处在于tuple的元素不能修改. tuple使用小括号,列表使用方括号. tuple创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. ...