Создание неиспользуемых переменных экземпляра в службе Android - PullRequest
0 голосов
/ 07 декабря 2011

Я занимаюсь разработкой приложения для 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, поскольку объект неявновся работа когда-то построена, и тусуется столько, сколько Служба делает.Хотя подход, кажется, работает для меня, всегда есть предупреждение для неиспользуемой локальной переменной.Есть ли лучший способ выполнить то, что я хочу сделать?

Я ценю ваше время, чтобы помочь мне.

Спасибо, Прадип

Ответы [ 2 ]

0 голосов
/ 08 декабря 2011

РЕДАКТИРОВАТЬ после разъяснения ОП в комментариях, что это присваивается полю в классе обслуживания, а не локальной переменной, мой ответ больше не применяется.


Вы можете просто сделать

new AccelerometerLogger();

само по себе.

0 голосов
/ 07 декабря 2011

Если вы используете Eclipse, вы можете просто вставить это выше объявления.

@SuppressWarnings("unused")
AccelerometerLogger accelerometerLogger = new AccelerometerLogger();

Полагаю, поскольку эта аннотация предоставлена, создание неиспользуемых объектов не рассматривается как зло или что-либо еще. Предупреждения действительно раздражают, поэтому замечательно, что у них есть такие аннотации.

...