Android には、センサー値を電話の SD カード メモリにダンプし、画面上のボタンを押すと自動的に終了するアプリケーションがあります。Sensor_delay_fastest を使用して、センサーの最大の更新を取得しています。
私の問題は、UI スレッドですべての計算を行っているため、ボタンの応答に非常に時間がかかることです。これは、Kill ボタンを押した後に余分な値をすべて記録するため、アプリケーションにとって非常に悪いことです。計算を別のスレッドに配置する必要があることは理解していますが、イベント処理操作でそれを行う方法がわかりません。たとえば、私は
protected void onResume()
{
super.onResume();
sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST);
sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_FASTEST);
}
および onStop() と、イベントが発生したときに実行される関数 onSensorChanged() および onAccuracyChanged() です。実際、主な「重い」計算は onSensorChanged() にあり、SD カードに値を書き込むため、おそらく遅延が発生しています。しかし、イベントが発生し続けると、多くのスレッドが作成されるため、別のスレッドに配置することはできません。
では、このシステムの応答性を高めるにはどうすればよいでしょうか? 私は本当に Android に慣れていないので、いくつかのサンプル コードによる助けをいただければ幸いです。
皆さんありがとう!
編集: スレッドに SensorEventListener のようなインターフェイスを実装させ、そのスレッド内で OnResume と OnStop を実装することはできますか?