在服务中调用getSystemService

时间:2014-07-26 11:46:15

标签: android android-service

我正在尝试编写一项能够在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.,但没有帮助。任何提示,谢谢

1 个答案:

答案 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);
}

我不确定这是最佳解决方案,但它是一种解决方法。

相关问题