SensorEventListener dans un fil séparé

Cela semble être une question de base, mais après avoir cherché pendant un moment et de jouer avec elle, j'en suis venu au point où certains d'aide serait appréciée. Je voudrais avoir un SensorEventListener exécuter dans un thread séparé de l'INTERFACE utilisateur, de sorte que les calculs qui doivent se produire lorsque des évènements à ne pas ralentir l'INTERFACE utilisateur.

De ma dernière tentative ressemble:

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
        }
    }

Dans l'activité (ou du service) onCreate(), j'ai créer un SensorThread objet et l'appel de la méthode start (). Comme vous vous en doutiez, le journal de débogage affiche le "RunTag" entrée dans le nouveau thread. Mais onSensorChanged()'s "ListenerTag" est en cours d'exécution dans le thread principal, même si son objet est instancié dans le nouveau thread. Comment puis-je changer cela?

source d'informationauteur Thinman