当前位置: 代码迷 >> Android >> android(java)控制http连接超时的有关问题
  详细解决方案

android(java)控制http连接超时的有关问题

热度:15   发布时间:2016-05-01 13:45:00.0
android(java)控制http连接超时的问题

"声明一个boolean公共变量,表明当前httpconnection是否得到服务器回应。

你的连接线程中在连接之前置这个变量为false;

另起一个监视线程,拿到那个HttpConnection的连接对象,并循环监视这个boolean公共变量。如果指定时间内(20秒后)你的boolean公共变量还是false,那么就主动置httpconnection=null。这样,那边连接线程就会抛出异常退出来。"??-----zhengyun

写了Timer类来实现.(学习国外一个网站上的写法)

class?Timer?extends?Thread?{
??
??protected?int?m_rate?=?100;

??
??private?int?m_length;

??
??private?int?m_elapsed;

??
??public?Timer(int?length)?{
???//?Assign?to?member?variable
???m_length?=?length;

???//?Set?time?elapsed
???m_elapsed?=?0;
??}
??

??public?synchronized?void?reset()?{
???m_elapsed?=?0;
???System.out.println("reset?timer");
??}
??
??public?synchronized?void?setTimeOut()
??{
???m_elapsed?=?m_length+1;
??}

??
??public?void?run()?{
???//?循环

???System.out.println("timer?running");
???for?(;;)?{
????//?Put?the?timer?to?sleep
????try?{
?????Thread.sleep(m_rate);
????}?catch?(InterruptedException?ioe)?{
?????continue;
????}

????synchronized?(this)?{
?????//?Increment?time?remaining

??m_elapsed?+=?m_rate;

?????//?Check?to?see?if?the?time?has?been?exceeded
?????if?(m_elapsed?>?m_length?&&?!isConnActive)?{?//isConnActive?为全局变量
??????//?Trigger?a?timeout
??????timeout();
??????break;
?????}
????}

???}
??}

??
??public?void?timeout()?{
??????httpConnection?=?null;
??????System.out.println("conn?time?>?"?+?TIME_OUT?+?"?ms");
????}
?}


?

在http连接线程调用的同是调用?new?Timer(20*1000).start();

需要重新计时时候调用timer.reset();

  相关解决方案