我正在尝试使用 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(); }
}
};
非常感谢,
杰里