0
我正在編寫此應用程序,需要同時打開兩個InputStream並具有切換到任何流以便流式傳輸圖像的功能。我可以打開第一個流,但是當我嘗試打開第二個流時,它會掛起。以下是代碼,我已經發表評論,它可以解釋我是否做錯了什麼?Android應用程序在嘗試打開兩個DataInputStream時掛起
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;
}
我很長時間沒有得到任何答覆,沒有II沒有得到任何例外1)我有一個控制它們的應用程序的不同部分2)同意3)同意,但有當我調試它時,在這裏沒有引起異常.. – 2013-03-27 13:15:25
好吧,它好像你有服務器連接問題。當你從代碼之外進行連接時,它是否工作?你是從Android模擬器進行測試嗎?如何對這個功能進行單元測試? – Martin 2013-03-27 13:53:36
是的我猜想是這樣,但我確定它沒有連接問題,因爲我可以打開第一個流,但不是第二個!沒有即時通訊使用設備 – 2013-03-27 13:59:51