这可能是一个愚蠢的问题,我的Java只是简陋的概率:-(但我不明白为什么这有效(它实际上是Android代码,但我认为这是一般的Java问题).
我不明白该对象mySensorEventListener是如何被实际创建的?
public SensorListener mySensorEventListener = new SensorListener() {
@Override
public void onSensorChanged(int sensor, float[] values) {
synchronized (this) {
}
}
@Override
public void onAccuracyChanged(int sensor, int accuracy) {
}
};
Run Code Online (Sandbox Code Playgroud)
public class RouteMapActivity extends Activity implements IRegisterReceiver {
private SensorManager mSensorManager;
private MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mapView = new MapView(this, provider.getTileSource()
.getTileSizePixels(), resProxy, provider);
mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
mSensorManager.registerListener(mySensorEventListener,
SensorManager.SENSOR_ORIENTATION,
SensorManager.SENSOR_DELAY_FASTEST);
setContentView(mapView);
}
public SensorListener mySensorEventListener = new SensorListener() {
@Override
public void onSensorChanged(int sensor, float[] values) {
synchronized (this) {
float mHeading = values[0];
mapView.setMapOrientation(-mHeading);
}
}
@Override
public void onAccuracyChanged(int sensor, int accuracy) {
}
};
Run Code Online (Sandbox Code Playgroud)
没有新的
正如在评论中指出的那样,new在第一行中,这种实例化称为匿名类.
我不明白下面的代码实际上是做什么的.
该synchronized块确保传感器中的变化通知不会同时处理,而是一个接一个地处理.
如何调用此代码??? 什么时候叫???
此代码由方向的SensorManager更改调用.这是它注册的:
mSensorManager.registerListener(mySensorEventListener,
SensorManager.SENSOR_ORIENTATION,
SensorManager.SENSOR_DELAY_FASTEST);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |