Sensor de Acelerômetro em Rosca Separada

Estou salvando dados do Accelerometer Sensor to Database, mas quero fazer isso em um thread separado. Eu tentei pesquisar na Internet, mas a maioria deles usa o mesmo segmento. Por favor ajude. Coisas que eu tentei: 1)

SenSorEventListener sel;
    Thread A=new Thread(){
                public void run()
                {
                    sel=new SensorEventListener() {

                        @Override
                        public void onSensorChanged(SensorEvent event) {
                            // TODO Auto-generated method stub
                            double Acceleration,x,y,z;
                            x=event.values[0];
                            y=event.values[2];
                            z=event.values[2];
                            Acceleration=Math.sqrt(x*x+y*y+z*z);
                            db.addAccel(Acceleration);
                            Log.d("MESSAGE","SAVED");
                        }

                        @Override
                        public void onAccuracyChanged(Sensor sensor, int accuracy) {
                            // TODO Auto-generated method stub

                        }
                    };
                }
            };
            A.start();
            try {
                A.join();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            sm.registerListener(sel,s,1000000);
}

Eu peguei um SensorEventListener, inicializei-o em um novo Thread e, em seguida, registrei-o com o listener de registro.

Outra abordagem: eu implementei a classe Accelerometer usando a interface Runnable, inicializei tudo no Constructor, então meu método run () está em branco, mas essa abordagem não cria um novo Thread.

    Accelerometer(Context con,Database d)
        {   
            sm=(SensorManager)con.getSystemService(Context.SENSOR_SERVICE);
            s=sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
            sm.registerListener(this,s,1000000);
            db=d;
        }
   void run()
   {}

Por favor me sugira qualquer outra abordagem ou se estou fazendo algo errado nas abordagens acima.

questionAnswers(1)

yourAnswerToTheQuestion