我正在开发一个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,因为该对象隐含地完成了构建后的所有工作,并且只要服务执行就会挂起。虽然这种方法似乎对我有用,但总会有一个未使用的局部变量的警告。有没有更好的方法来完成我想做的事情?
感谢您抽空帮助我。
谢谢, 普拉迪普
答案 0 :(得分:0)
如果您使用日食,您可以将其置于声明之上。
@SuppressWarnings("unused")
AccelerometerLogger accelerometerLogger = new AccelerometerLogger();
我想因为提供了这个注释,创建未使用的对象不会被视为邪恶或任何东西。警告真的很烦人,所以他们有这些注释很棒。
答案 1 :(得分:0)
编辑在OP的评论中澄清,这是在分配给服务类中的字段而不是局部变量,我的答案不再适用。
你可以做到
new AccelerometerLogger();
本身。