android - 在 Service 类上调用 getSystemService 时出现空指针异常
问题描述
在我的主要活动中,我启动了一项服务。在该服务中,我尝试获取传感器管理器,但出现以下异常
Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference.
如果我尝试在活动类中获取传感器管理器,则不会发生该错误,它只发生在服务类中。
这是我的主要活动课程:
public class MainActivity extends AppCompatActivity
{
GridLayout mainGrid;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(MainActivity.this, accelerometerBackgroundService.class);
startService(intent);
mainGrid = (GridLayout) findViewById(R.id.mainGrid);
//Set Event
setSingleEvent(mainGrid);
// setToggleEvent(mainGrid);
}
...
}
这是我的服务类:
public class accelerometerBackgroundService extends Service implements SensorEventListener
{
//We need to log our activity to check what happens
private static final String TAG = "Accelerometer_Activity";
private SensorManager mSensorManager; //defining a sensor manager and the accelerometer
private Sensor accelerometer;
public accelerometerBackgroundService()
{
Log.i(TAG, "GOT HERE 100");
//getting the sensor manager services
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
//getting the accelerometer sensor
accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if(accelerometer != null)
{
//If accelerometer sensor is available, create a listener
mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
else
{
String noAccelError = "This device does not support accelerometer sensor!";
}
}
...
}
我想这与上下文有关。我搜索了类似的问题,但没有帮助我。
谢谢你。
解决方案
您应该将初始化代码移动到内部Service#onCreate()
而不是其构造函数中。
因此,重写 的方法onCreate()
,Service
您就可以访问它的Context
.
此外,由于Android框架需要一个空的构造函数,Service
你不应该在构造函数中传递参数,Service
否则java.lang.InstantiationException
会抛出a。
推荐阅读
- python - 部署在自定义 OpenAI-GYM 环境中训练的 DeepRL 模型
- python - 在函数中使用点积来拟合
- c# - System.Runtime.InteropServices.ExternalInterop.RoGetActivationFactory C# 崩溃
- python - Matplotlib subplots_adjusts 函数不起作用
- json - google-services.json 文件未正确生成
- python-3.x - 从网页中提取内容并在 Python 中另存为数据框
- facebook-graph-api - 聊天机器人无法访问 Facebook 用户的公开资料
- java - 为什么在 Eclipse 中创建动态 Web 项目期间构建路径中缺少源文件夹
- forms - TWindowsMediaPlayer 和击键
- go - 使用 Shopify/sarama 重新启动程序时从 kafka 获取最新偏移量