私の Android コードには、センサー値をファイルにダンプするためのイベント処理メカニズムがあります。現在、メインの UI スレッドで実行しているため、UI ボタンの反応が非常に遅く、スピードアップしたいと考えています。
イベント処理関数でマルチスレッドを使用するにはどうすればよいですか? 私はこのようにしようとしています:
- グローバル変数 writeNow を作成します。
- センサーの値が変化したら、WriteNow = true を設定します。
次のようなスレッドをクラスに作成します。
Thread thread1 = new Thread() { public void run() { if(writeNow == true) { try { fos.write(s.getBytes()); } catch (IOException e) { e.printStackTrace(); } writeNow = false; } } };
したがって、writeNow が true の場合は常に、File に書き込み、WriteNow を false に設定します。ただし、スレッドは一度実行されてから停止するため、これは正しいアプローチではないことに気付きました。while(true) と wait() を使用して簡単な例を試してみたところ、何百万回もスレッドが中断されていることがわかりました。
では、プロセスを高速化するために、このイベント処理メカニズムを単一のスレッドに含めるにはどうすればよいでしょうか?
ありがとう!