2016-03-04 41 views
0

如何在我的if语句中设置超时/(引发异常)。我想只在isNetworkAvailable方法以2000毫秒响应时才执行if语句,否则会引发异常。否则,我只想知道2000毫秒是否已经过去,并忽略if语句。如何在花费几秒钟后忽略语句

我将不胜感激,谢谢。

这是我的if语句

 if (networkUtils.isNetworkAvailable(context)) { 
      getToken = new GetToken(context); 
      getToken.getToken(); 
      token = Token.getInstance(); 
     } 
+0

我想你需要暂停。寻找这个http://stackoverflow.com/questions/2799938/httpurlconnection-timeout-question? – Raghunandan

+0

我该怎么做?会发生什么情况是,当有一个互联网连接,但服务器已关闭,这是非常时间检查连接,然后我会对其进行限制。 –

+0

如果服务器没有响应检查异常并正确处理。 – Raghunandan

回答

2

我会建议使用这种方法来检查,如果您的设备在线:

public boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 

或者,如果你做一个HTTP连接,你可以做一个超时。

+0

我与互联网的连接检查与此非常相似,但是发生的情况是,当有互联网连接时,但服务器关闭时,检查连接的时间非常有限,那么我会对此进行限制。 –

+0

如果您有连接,并且您发出的请求太长,请在请求中注明超时,例如@Ragunandan的注释。它会工作,因为它只会尝试建立连接,直到你的时间到期。你通过'con.setConnectTimeout(2000)设置的内容;'你的HttpURLConnection –

+0

在哪里?如果你不想这样,你可以在一个线程中创建请求,然后你可以在2000毫秒之后看到Thread仍然没有回应它。 –