2012-04-25 3 views
2

나는 다음과 같은 onSensorChanged() 메서드 뭔가 않는 SensorEventListener를 가지고 :onSensorChanged (...)에 동기화가 필요합니까?

값이 몇 가지 계산을 수행하기 위해의 handleEvent() 메소드에 액세스 할 것이다 클래스 변수입니다
public void onSensorChanged(SensorEvent e){ 
    values = e.values.clone(); 
    handleEvent(); //do some computations 
} 

. 변수 값을 잠글 필요가 있습니까? 즉, 다른 스레드가 handleEvent()에있는 동안 onSensorChanged()를 호출하는 다른 스레드가 값을 재정의 할 수 있습니까?

미리 도움을 청하십시오!

답변

2

UI 스레드 내에서 OnSensorChanged가 호출되므로 UI ​​스레드와 다른 스레드에서 values에 액세스하면 동기화하거나 대기열과 같은 다른 기술을 사용해야합니다.

+0

빠른 답변 감사드립니다. 사실, 어떤 스레드가 실제로 onSensorChanged() 메소드를 호출합니까? 이 시스템 스레드가 있습니까? UI 스레드에서'values'에 액세스하려면 왜 동기화가 필요하지 않습니까? – user1086105

+0

나는 내 대답을 편집했다. OnSensorChanged는 UI-Thread 내부에서 호출됩니다. – Renard

+0

아 재미 있습니다! 이것은 하나의 스레드가'onSensorChanged()'에서 올바르게 동작하는 동안'onSensorChanged()'가 어떤 스레드에 의해 호출되지 않는다는 것을 의미합니다. 단 1 개의 UI 스레드 만 있기 때문에 맞습니까? 그래서이 경우 UI 스레드가 내 'handleEvent()'메서드를 실행하므로 동기화가 필요하지 않습니다 ... UI 스레드가'onSensorChanged() '? – user1086105

관련 문제