Я занимаюсь разработкой приложения для Android, в котором есть Служба, которая прослушивает некоторые события и регистрирует их на заднем плане.Поскольку я регистрирую несколько событий, я создал класс регистратора для каждого типа события, которое я хочу зарегистрировать.Ниже приведен один такой класс.
public class AccelerometerLogger {
private final Context mContext;
private final SensorManager mSensorManager;
private final Sensor mAccelerometer;
private final AccelerometerListener mAccelerometerListener;
public AccelerometerLogger(Context context) {
super(context);
mContext = context;
mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = getAccelerometer();
mAccelerometerListener = new AccelerometerListener();
boolean status = false;
if (mAccelerometer != null) {
status = mSensorManager.registerListener(mAccelerometerListener, mAccelerometer,
SensorManager.SENSOR_DELAY_NORMAL);
}
Log.i("AccelerometerLogger", "Regisrtered = " + status);
}
private Sensor getAccelerometer() {
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
if (sensors.size() > 0) {
return sensors.get(0);
}
return null;
}
private class AccelerometerListener implements SensorEventListener {
long lastTime;
long now;
AccelerometerListener() {
now = lastTime = 0;
}
@Override
public void onSensorChanged(SensorEvent event) {
now = event.timestamp; //timestamp is in nanoseconds
if (now - lastTime > 5000000000l) {
// Log some stuff here
}
}
}
}
Теперь в onCreate () Службы я делаю
AccelerometerLogger accelerometerLogger = new AccelerometerLogger(getApplicationContext());
Но мне никогда не нужно использовать accelerometerLogger, поскольку объект неявновся работа когда-то построена, и тусуется столько, сколько Служба делает.Хотя подход, кажется, работает для меня, всегда есть предупреждение для неиспользуемой локальной переменной.Есть ли лучший способ выполнить то, что я хочу сделать?
Я ценю ваше время, чтобы помочь мне.
Спасибо, Прадип