我是论坛和android开发的新手。
我一直在尝试获取设备方向数据,但似乎做错了什么。我一直在关注此链接的教程:http://www.mail-archive.com/android-beginners@googlegroups.com/msg23415.html。
然而,行
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
给我一个错误,SENSOR_SERVICE不是一个有效的变量,所以我发现它是Context类的公共静态变量,所以我使用
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
这给了我一个错误,即getSystemService(String)不是我当前类的方法。我现在明白getSystemService(String)是Context的一个方法,所以我的问题是
1)什么是 - 我认为它是一个演员 - (SensorManager)
在方法调用前做?
2)我是否必须获取当前上下文并运行该方法?如果是这样的话?
我确信我正在过度思考,但我们非常感谢任何帮助和耐心。
答案 0 :(得分:0)
是的,getSystemService()是Context的一个方法,要获取Context,要么使用
getApplicationContext();
或者,使用您当前的活动或服务,通过以下对象获取上下文:
ThisService.this.getSystemService();
或
ThisActivity.this.getSystemService();
答案 1 :(得分:0)
1)什么是 - 我认为它是一个演员 - (SensorManager)在方法调用之前做什么?
这确实是演员。这是必要的,因为getSystemService
被声明为返回一个无差别的Object
类型(即使它显然返回更具体的东西)。
2)我是否必须获取当前上下文并运行该方法?如果是这样的话?
在自定义View
课程中,您可以使用getContext()
。如果此代码是另一种自定义类的一部分,则可以在构造函数中传递上下文。我建议在将上下文保存为成员字段时使用getApplicationContext()
,因为如果活动从设备的方向更改中消失,Activity
上下文应该可以自由地进行垃圾收集。