我正在尝试编写一项能够在Gear Live上获得心率的服务,并按照此处的问题Get Heart Rate from "Sensor" Samsung Gear Live
如果我把这部分放在
Log.d(TAG, "prepare to call getSystemService");
mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE));
Log.d(TAG, "after calling getSystemService");
在某个活动的onCreate()
,它运行正常。但是,如果我将其转移到服务,它会抛出一个NPE。我试图在`getSystemService前添加this.
,但没有帮助。任何提示,谢谢
答案 0 :(得分:2)
我弄清楚了,原因是在getSystemService
内,有一个对此函数的调用:
@Override
public Object getSystemService(String name) {
return mBase.getSystemService(name);
}
其中mBase
为null。这是一个Context
对象。所以我必须在onCreate()
中放置启动服务的活动的上下文。代码如下:
public HeartRateMonitorService(Context context){
super();
mBaseConext = context;
}
@Override
public void onCreate() {
super.onCreate();
attachBaseContext(mBaseConext);
}
我不确定这是最佳解决方案,但它是一种解决方法。