Android 如果没有可用的连接,创建套接字实例会在随机时间阻塞线程
试图通过调用以下命令在单独的线程中打开套接字连接:Android 如果没有可用的连接,创建套接字实例会在随机时间阻塞线程,android,sockets,Android,Sockets,试图通过调用以下命令在单独的线程中打开套接字连接: Socket sc = sc = new Socket(address, Integer. parseInt(port)); 但有一个问题,如果没有活动的互联网连接,这个线程会阻塞,在我的htc hero 2.1上30秒,在我的android emulator 2.2上2分钟 在打开连接之前,我尝试使用此方法: public static boolean isOnline() { ConnectivityManage
Socket sc = sc = new Socket(address, Integer. parseInt(port));
但有一个问题,如果没有活动的互联网连接,这个线程会阻塞,在我的htc hero 2.1上30秒,在我的android emulator 2.2上2分钟
在打开连接之前,我尝试使用此方法:
public static boolean isOnline()
{
ConnectivityManager cm = (ConnectivityManager) app.getInstance().getSystemService(Context. CONNECTIVITY_SERVICE);
if(null != cm.getActiveNetworkInfo())
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
return false ;
}
public void run()
{
if(!isOnline())
throw new IOException("internet not connected");
Socket sc = new Socket(address, Integer. parseInt(port));
}
一切都很好,但若在调用isOnline之后,在新套接字调用之前,活动连接将丢失,那个么它仍然会阻塞随机时间
我的问题是有没有可能解决那个问题?或者只是在固定时间内阻塞这个线程大约2-3秒?我建议在超时后调用
thread.interrupt()
你可能还想得到Android的源代码,看看它花了多少时间。它可能会让您了解处理此问题的其他方法。来自另一个线程。该线程等待N次,然后中断/终止套接字连接线程。我的多线程fu不是很好,所以可能我误解了
interrupt()
。