私は、Bluetoothのシリアルデータをリッスンするスレッドを持っています。Handler.Postdayayedをスレッドで定期的に呼び出す
私は、データをUIスレッドに完全に送信するsendData(byte[] buffer)
というUIスレッドにデータを渡す方法があります。これは、高い頻度でパケットを受信すると非常に遅くなる可能性があります。
しかし、私は高い頻度でデータパケットを受信するので、このsendData
メソッドをxミリ秒ごとに呼び出す定期的なハンドラを実装したいと思います。私のスレッドで
私はrun()
方法で次のように呼ばれる:
Looper.prepare;
mHandler = new Handler();
は、私が(自分自身で完璧な仕事をしている)sendData(buffer)
をsorrounded:
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
sendData(tmp);
System.out.println("PostDelayed| "+ System.currentTimeMillis());
mHandler.postDelayed(this,INTERVAL);
}
},INTERVAL);
間隔がAで事前宣言されているのは、メソッドが呼び出される定期的な間隔です。
しかし、postDelayedの実行が呼び出されていません。私はデバッグを試みました、postdelayeds行が呼び出されますが、それは'No such instance field mHandler'
で終了します。
何をすべきか?
「mHandler」のようなインスタンスフィールドはありません。 – immibis
それはどういう意味ですか? – VikingPingvin
はじめに、 'mHandler'とは何ですか?宣言はどこですか? – immibis