Bu temel bir soru gibi görünüyor, ancak bir süre aradıktan sonra ve onunla oynadıktan sonra, bazı yardımların takdir edileceği noktaya geldim. SensorEventListener ürününün kullanıcı arabiriminden ayrı bir iş parçacığında çalıştırılmasını isterim. Böylece, olaylar geldiğinde oluşması gereken hesaplamalar, kullanıcı arabirimini yavaşlatmaz.SensorEventListener ayrı iş parçacığında
Benim son girişim gibi görünüyor: In
class SensorThread extends Thread {
SensorManager mSensorManager;
Sensor mSensor;
public void run() {
Log.d("RunTag", Thread.currentThread().getName()); // To display thread
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE );
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
MySensorListener msl = new MySensorListener();
mSensorManager.registerListener(msl, mSensor, SensorManager.SENSOR_DELAY_UI);
}
private class MySensorListener implements SensorEventListener {
public void onAccuracyChanged (Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent sensorEvent) {
Log.d("ListenerTag", Thread.currentThread().getName()); // To display thread
}
}
aktivite (veya hizmetin) onCreate(), bir SensorThread nesne oluşturmak ve start() yöntemini çağırın. Beklendiği gibi, hata ayıklama günlüğü yeni iş parçacığında "RunTag" girdisini gösterir. Ama onSensorChanged() 'ın "ListenerTag", nesnesi yeni iş parçacığında başlatılmış olsa bile, ana iş parçacığında çalışıyor. Bunu nasıl değiştirebilirim?
[Acclerometre Sensörünün Ayrı Dişte olası kopyası] (http://stackoverflow.com/questions/17513352/acclerometer-sensor-in-separate-thread) –