你能解释一下,为什么我得到0.0值,当我收到时,例如5来自其他一个班级?
public class PSLServiceMain extends Activity implements SensorEventListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
PSLService LightSensorValue = new PSLService();
LightSensorValue.LightSensor = 5;
.........................
}
}
@SuppressLint("Wakelock")
public class PSLService extends Service {
............
float LightSensor;
.............
}
}
这是我的问题代码的一小部分。
修改
是的,对不起解释很抱歉。 所以,我希望在我的主类PSLServiceMain中获得Light Sensor值并将其发送到calss PSLService。 问题是当变量是静态的时,它的值会被发送到另一个类的权利。当它不是静态的(实例)时,我得到0.0
答案 0 :(得分:1)
你的问题是你认为你想用这条线实现的......
PSLService LightSensorValue = new PSLService();
Android Service
是一个特殊情况的Java类,您不会使用Service
创建new
- 而是需要使用startService(...)
,此时系统将为您创建Service
并调用将Service
设置为运行状态所需的各种生命周期方法。
重点是 - 你不应该试图直接操纵Service
中的变量。如果您需要将某种数据传递给Service
,那么您应该在用于启动Intent
的{{1}}中添加额外数据。
或者,可以绑定到Service
并使用绑定到Service
时返回的IBinder
接口调用方法。
编辑:您可以在文档Extending the Binder class
中查看如何使用绑定服务