Java:为什么这样做?
这可能是一个愚蠢的问题,我的Java可能只是初级的:-( 但我不明白为什么会这样(实际上是Android代码,但我认为这是一个一般的Java问题) 我不明白对象Java:为什么这样做?,java,android,Java,Android,这可能是一个愚蠢的问题,我的Java可能只是初级的:-( 但我不明白为什么会这样(实际上是Android代码,但我认为这是一个一般的Java问题) 我不明白对象mySensorEventListener是如何实际创建的 我不明白下面的代码实际上做了什么 如何调用此代码 什么时候叫 这是我不明白的部分 这是它所属的android活动: 没有新的 正如注释中指出的,在第一行中有一个new,这种实例化称为 我不明白下面的代码实际上做了什么 synchronized块确保传感器中的更改通知不会同
mySensorEventListener
是如何实际创建的
- 我不明白下面的代码实际上做了什么
- 如何调用此代码
- 什么时候叫
这是它所属的android活动: 没有新的 正如注释中指出的,在第一行中有一个
new
,这种实例化称为
我不明白下面的代码实际上做了什么
synchronized
块确保传感器中的更改通知不会同时处理,而是一个接一个地处理
如何调用此代码???
什么时候叫
当中发生更改时,SensorManager
会调用此代码。这就是它注册的目的:
mSensorManager.registerListener(mySensorEventListener,
SensorManager.SENSOR_ORIENTATION,
SensorManager.SENSOR_DELAY_FASTEST);
也许你感到困惑的原因是你没有意识到,{…}大括号之间的东西是创建一个没有正式
public class SensorListener {
@Override
public void onSensorChanged(int sensor, float[] values) {
synchronized (this) {
}
}
@Override
public void onAccuracyChanged(int sensor, int accuracy) {
}
}
然后在你的代码中你会看到
public SensorListener mySensorEventListener = new SensorListener();
也许你没有意识到你上面写的和我在这里写的是一样的。
这有用吗?“没有新的!!!”它在你发布的代码的第一行。
mySensorEventListener=newsensorlistener()
有new
在那里..它在第一行public SensorListener mySensorEventListener=newsensorlistener(){
看看这个:当创建RouteMapActivity时,mySensorEventListener是一个带有新初始化的字段。回答不错,但我想你也应该指出,同步(这)
通常是。谢谢MB,我不确定我何时理解公共SensorListener mySensorEventListener=new SensorListener(){…等等.
被调用,我看到新建
现在:-)在创建对象时仍然没有得到新建
操作符意味着对象创建。由于此代码不在方法内部,而是在类内部,并且此对象不是静态的,因此它是在封闭对象(您的路由活动
时创建的)已创建。感谢KSK:-)但仍然没有得到它:-(现在我了解大括号之间的内容是一个类定义,我看到了新的,但它是何时/如何实例化的?感谢KSK新的SensorListener()
在调用RouteMapActivity
类的构造函数之前被调用。使用一个好的调试器逐步检查代码可能会对您有所帮助(如果可以的话)。您将看到这一行在RouteMapActivity
构造函数(如果有)之前执行换句话说,当实例化RouteMapActivity
时,随后立即实例化SensorListener
。
public class SensorListener {
@Override
public void onSensorChanged(int sensor, float[] values) {
synchronized (this) {
}
}
@Override
public void onAccuracyChanged(int sensor, int accuracy) {
}
}
public SensorListener mySensorEventListener = new SensorListener();