【发布时间】:2013-03-08 06:59:59
【问题描述】:
我在下面有一段代码,用于从 Android 上的套接字接收输入流。它工作正常,但是当手机进入睡眠状态时,我的记录器会疯狂打印出它收到了""。
从我的调试来看,是不是我整个循环中的if语句不够用?
//Global variable declaration
private OnMessageReceived mMessageListener = null;
byte[] buffer = new byte[100];
while (mRun) {
int len = in.read(buffer);
input = "";
if (buffer != null && mMessageListener != null) {
for (int i = 0; i < len; i++) {
input += (char) buffer[i];
}
// call the method messageReceived from MyActivity class
mMessageListener.messageReceived(input);
System.out.println("Recieved: " + input);
}
input = "";
}
这是我在while 中运行的代码。现在,我确定我没有在我的测试中测试正确的条件:
if (buffer != null && mMessageListener != null)
代码。
我还能测试什么/我可以测试什么不正确的?
显然while 运行一次后,缓冲区不 == null,然后我假设当手机进入睡眠状态(屏幕变黑)mMessageListener 变为非 null ?
谢谢
【问题讨论】:
-
您是否尝试过将此代码作为服务运行?当然,如果您希望它在应用程序由于某些原因被关闭/暂停时也能执行。