从其他类中获取非静态值

时间:2013-10-12 21:06:03

标签: android

你能解释一下,为什么我得到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

1 个答案:

答案 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

中查看如何使用绑定服务