2011-08-22 6 views
0

, compass 등의 센서 위에 Sensor Manager 클래스를 설계해야합니다.이 프로젝트는 센서 장치의 데이터가 필요한 다른 Android 프로젝트에서 참조되고 사용되는 class library 프로젝트입니다. 문제는 accelerometercompass과 같은 기기를 Sensor Manager 클래스에 사용하려면 Context이 필요합니다. 이 시나리오에서 현재 컨텍스트에 어떻게 액세스 할 수 있는지 알 수 없습니다.이 경우 컨텍스트를 가져 오려면 어떻게해야합니까?

Sensor Manager의 발신자/사용자에게 어떤 메소드의 매개 변수로 Context을 전달해야합니까? 센서 관리자를 사용하는 클래스 또는 활동이 두 개 이상이면 어떻게됩니까? 실제로 컨텍스트를 하나만 사용할 것입니다. 문제가 발생할 것입니까?

또는 현재 응용 프로그램의 컨텍스트를 얻는 간단하고 안전하며 신뢰할 수있는 방법이 있습니까?

업데이트

이것은 내 현재 디자인 ... 내가 SensorManager과도 SensorManager 내부의 각 장치에 대한 싱글 구현 한

. 예를 들어 SensorManager 내부에 가속도계 인스턴스가 하나만있을 것입니다. 호출자는 SensorManager를 가져 와서 RegisterForAccelerometer 메서드를 호출합니다. 결과적으로 SensorManager의 Accelerometer 인스턴스 내부에서 가속도계 좌표에 업데이트가있을 때마다 등록 된 모든 발신자에게 알림이 전송됩니다. 이제 문제는 내가 맥락을 필요로 할 때 처음으로 가속도계의 좌표를 듣기 시작하려고 할 때입니다.

답변

1

하나의 컨텍스트로 충분하지 않습니다. 구현 및 필요에 따라지도에 컨텍스트를 저장하거나 특정 동작에만 사용하려는 경우이 컨텍스트를 전달하는 방법 및 타이밍에 영향을 미칩니다.

대략적으로 컨텍스트를 사용할 새 객체를 만들거나 싱글 톤이있는 경우이 호출에서 컨텍스트를 요청할 수 있습니다. 클래스의 인스턴스를 여러 개 만들면 해당 인스턴스를 생성자/팩토리 메서드.

+0

전달합니다. 친절하게 살펴 봅니다. 하나의 컨텍스트를 사용하여 여러 클라이언트/호출자를 수신 대기하려고하기 때문에이 디자인이 올바르지 않습니까? –

0

내 의견으로는 그 장치를 사용하고있는 Activitycontext을 전달해야합니다. 이 클래스들을 Singleton으로 만들지 않는다고 가정합니다.

또한 으로 클래스를 만들고 싶다면 Activity context 대신 Application context을 전달할 수는 있지만이 방법이 작동하는지 잘 모르겠습니다.

업데이트 :

Application 상황 http://developer.android.com/reference/android/app/Application.html 사항은이 안내서를 참조하십시오.

일반적으로 Application을 서브 클래스 할 필요가 없습니다. 대부분의 경우 정적 싱글 톤은 모듈화 된 방식으로 동일한 기능을 제공 할 수 있습니다. 싱글 톤에 글로벌 컨텍스트 (예 : 브로드 캐스트 리시버 등록)가 필요한 경우이를 검색하는 함수에 싱글 톤을 처음 생성 할 때 Context.getApplicationContext()를 내부적으로 사용하는 Context를 제공 할 수 있습니다.

그래서 상관없이하는 활동은 당신이 당신은 내가 디자인 세부 사항과 질문을 업데이트 한이 Application context

+0

내 SensorManager 클래스 내에서 응용 프로그램 컨텍스트를 얻으려면 어떻게해야합니까? –

+0

내 대답을 업데이트했습니다 – ingsaurabh

+0

별도의 클래스 라이브러리 프로젝트에 컨텍스트가 필요한 경우 모든 것을 시도했지만 아무것도 작동하지 않습니다. 실행중인 코드 나 코드가 있습니까? –

관련 문제