У меня есть приложение в Android, которое сбрасывает значения датчика в память SD-карты телефона и убивает себя, когда я нажимаю кнопку на экране.Я использую Sensor_delay_fastest, чтобы получить максимальное обновление датчиков.
Моя проблема в том, что, поскольку я выполняю все свои вычисления в потоке пользовательского интерфейса, кнопка реагирует очень долго, что очень плохо для моего приложения, поскольку записывает все дополнительные значения после нажатия кнопки 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 в этом потоке?