Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果没有可用的连接,创建套接字实例会在随机时间阻塞线程_Android_Sockets - Fatal编程技术网

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()