gpt4 book ai didi

java - Android 应用程序在尝试打开两个 DataInputStream 时挂起

转载 作者:行者123 更新时间:2023-12-01 14:43:55 25 4
gpt4 key购买 nike

我正在编写这个应用程序,我需要同时打开两个输入流,并且能够切换到任一流以传输图像。我可以打开第一个流,但是当我尝试打开第二个流时,它挂起。以下是代码,我在它挂起的地方做了注释,你能解释一下我是否做错了什么吗?

public boolean Start()
{
numberOfServicesUsingThisInstanceLock.lock();

if (numberOfServicesUsingThisInstance > 0)
{
numberOfServicesUsingThisInstance++;
return true;
}

// else
numberOfServicesUsingThisInstance = 1;

bisList.clear();
disList.clear();
FrameTimeStampList.clear();

try
{
for (int i = 0; i < this.objConfig.lstCameraInfo.size(); i++)
{
FrameTimeStampList.add(Long.valueOf("-1"));
final CameraInfo ci = this.objConfig.lstCameraInfo.get(i);
String sourceUrl = GetMjpegUrlForCam(this.Type, ci.brand, ci.ipAddress);

Log.d("DUMPMJPEG_START", "URL: " + sourceUrl);

if (sourceUrl == "NONE") continue;

URL url = new URL(sourceUrl);

Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication (ci.userName, ci.password.toCharArray());
}
});

Log.d("DUMPMJPEG_START", "OpenStream");
InputStream in = url.openStream(); // CODE HANGS HERE
Log.d("DUMPMJPEG_START", "Creating DataInputStream");
DataInputStream dis = new DataInputStream(in);
Log.d("DUMPMJPEG_START", "DataInputStream added to the DataInputStream List");

Log.d("DUMPMJPEG_START", "adding BufferedInputStreams to the list");
BufferedInputStream bis = new BufferedInputStream(dis);
Log.d("DUMPMJPEG_START", "BufferendInputStreams added to the list");
disList.add(dis);
bisList.add(bis);
}
}
catch(Exception ex)
{
ex.getMessage();
}
return false;
}

最佳答案

当你说它挂起时,你是否长时间没有得到任何响应或者是否出现异常?

更多代码:

  1. 您打开流但从不关闭它们。或者您可以在应用程序的其他部分进行控制吗?
  2. 打开流而不使用某种连接超时是一个坏主意。
  3. 该异常不会打印任何内容,因为您应该使用 e.printStackTrace() 打印它或将消息发送到某些日志/输出。

关于java - Android 应用程序在尝试打开两个 DataInputStream 时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15659219/

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