我正在尝试使用Handler在一定时间内执行一些代码。
这在我的两个类中运行良好,但我在这个类中遇到了问题:
我的一个类扩展了Activity,并启动了一个实现了Runnable接口的线程。
在我的run()方法中,与我的其他类一样:
mHandler = new Handler();
mHandler.removeCallbacks(StopRequest);
mHandler.postDelayed(StopRequest, 30000);
程序似乎在抱怨:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我不明白为什么它在发布,可以有人帮我吗?
编辑:添加我的代码部分:
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(clientSocket.getOutputStream())), true);
out.println("VOICE_CALL_REQUEST");
// Wait for a response
// Set a timer (about 30 seconds)
mHandler = new Handler();
mHandler.removeCallbacks(StopRequest);
mHandler.postDelayed(StopRequest, 3000);
// Ready reply
InputStream stream = clientSocket.getInputStream();
BufferedReader data = new BufferedReader(new InputStreamReader(stream));
String line = data.readLine();
mHandler.removeCallbacks(StopRequest); // Timer is removed here
如果计时器达到30秒:
// Stop a call request after some amount of time
private Runnable StopRequest = new Runnable() {
public void run() {
// Send a message to cancel the voice call
out.println("VOICE_CALL_CANCEL");
// Close the port
try {
clientSocket.close();
}
catch (IOException e) { finish(); }
}
};
Thanks a lot,
Jary
Socket.setSoTimeout()
呢? - EboMike