gpt4 book ai didi

android - 如果没有可用连接,则创建 Socket 实例会在随机时间内阻塞线程

转载 作者:行者123 更新时间:2023-11-29 02:15:28 26 4
gpt4 key购买 nike

尝试通过调用以下方法在单独的线程中打开套接字连接:

Socket sc = sc = new Socket(address, Integer. parseInt(port));

但是有一个问题,如果没有 Activity 的互联网连接,这个线程会阻塞,在我的 htc hero 2.1 上持续 30 秒,在我的 android 模拟器 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 之后和新的 Socket 调用之前 Activity 连接丢失,它仍然会随机阻塞。

我的问题是有没有可能解决这个问题?或者只是将此线程阻塞大约 2-3 秒的固定时间?

最佳答案

我建议在超时后调用 thread.interrupt()

您可能还想获取 Android 源代码并查看它花费了所有时间。它可能会让您对处理此问题的其他方法有所了解。

关于android - 如果没有可用连接,则创建 Socket 实例会在随机时间内阻塞线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com