Handler を使用して、一定時間内にコードを実行しようとしています。
これは私の2つのクラスでうまく機能しますが、私はこれで問題を抱えています:
私のクラスの 1 つは Activity を拡張し、(Runnable を実装する) Thread を開始します。
私の 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(); }
}
};
どうもありがとう、
ジャリー