我必须在Sensor Manager
,accelerometer
等传感器之上设计一个compass
类。此项目将是一个class library
项目,将被引用并用于其他需要传感器设备数据的android项目。问题是,为了在我的accelerometer
课程中使用compass
和Sensor Manager
等设备,我需要Context
。我无法弄清楚如何在这种情况下访问当前上下文。
我应该要求Sensor Manager
的来电者/用户在某个方法的参数中传递Context
吗?如果多个类或活动将使用我的传感器管理器怎么办?实际上我只会使用一个Context,它会导致问题吗?
或者是否有任何简单,安全和可靠的方式来获取当前应用程序的上下文?
更新
这是我目前的设计......
我已经为SensorManager和SensorManager中的每个设备实现了单例。因此,例如,SensorManager中只有一个Accelerometer实例。调用者将获取SensorManager,然后调用方法RegisterForAccelerometer。因此,只要SensorManager的Accelerometer实例内的Accelerometer坐标有任何更新,就会通知所有已注册的呼叫者。现在问题出现了,当我第一次尝试开始监听加速度计的坐标时,因为我需要上下文。
答案 0 :(得分:1)
在我看来,您必须通过使用这些设备的特定context
的{{1}}。我假设您没有将这些课程设为Activity
。
此外,如果您想将课程设为Singleton
,我猜您可以通过singleton
而不是Application context
,但如果可行,我不确定。
更新:
请参阅此Activity context
上下文http://developer.android.com/reference/android/app/Application.html。
通常不需要子类Application。在大多数情况下,静态单例可以以更模块化的方式提供相同的功能。如果你的单例需要一个全局上下文(例如注册广播接收器),那么检索它的函数可以给一个Context,它在第一次构造单例时在内部使用Context.getApplicationContext()。
因此,无论您是哪种活动,都会传递此Application
Application
答案 1 :(得分:0)
一个上下文对你来说是不够的。取决于您的实现和需求,您可能希望将上下文存储在映射中或仅用于特定操作,因此这将影响传递此上下文的方法和时间。
我可以粗略地说,如果你使用它来构造一个将使用上下文的新对象,或者如果你有一个单例,请在这个调用中请求上下文,如果你创建了类的多个实例,则在构造函数中传递它/工厂方法。