0

我有以下代码,我使用 ReadUnsignedByte() 函数但挂起并且不返回任何导致挂起应用程序的内容。我用了try catch但是没有响应,这种情况我该怎么办?

private int getEndOfSeqeunce(DataInputStream in, byte[] sequence) throws TimeoutException {
    int seqIndex = 0;
    byte c = -99;
    for(int i=0; i < FRAME_MAX_LENGTH; i++) {
        Log.v("DataInputStream", ""+in);
        try {
            c = (byte) in.readUnsignedByte(); // Stuck here ... No response at this line which hangs the Android application.
            Log.v("C ::::::::UNSIGNE::readUnsignedByte::::::::", ""+c);
            if(c == sequence[seqIndex]) {
                seqIndex++;
                if(seqIndex == sequence.length) return i + 1;
            } else seqIndex = 0;

        } catch (IOException e) {
            e.printStackTrace();
            i = FRAME_MAX_LENGTH;
            Activity ac = (Activity) cox;   
            }

    }
    return -1;
}
4

1 回答 1

1

这是一个阻塞调用,您不能设置超时,它必须返回数据或失败并出现异常。如果您正在从套接字读取,它将阻塞,直到达到读取超时(如果已设置)。您可能希望在单独的线程中运行它以不挂起 UI,但它仍会阻塞。如果这是针对通信协议的,那么您可能在某些地方遇到问题并且期望未发送的数据。

于 2012-11-26T08:47:47.087 回答