본문 바로가기

Thread

(2)
[Noise Detector] 그래픽 모듈 (6) : Warning Warning은 WaveBars.WarningListener 인터페이스를 구현하며, 이 인터페이스는 단 하나의 startWarning() 메소드만 갖습니다. 그리고 WaveBars에서 수신된 데이터의 최대값이 mCLValue보다 크면 Warning의 startWarning() 메소드를 호출하게 됩니다. startWarning() 메소드는 일정 시간마다 메인 스래드의 메세지 큐에 Runnable 객체만 전송하는 타이머 역할을 하는 스래드입니다. 이 Runnble 객체는 boolean타입의 mReqLight 필드만 true/false로 변환시켜가며 invalidate() 메소드를 호출하는 것이 전부인데, invalidate()로 인하여 호출되는 onDraw()에서 mReqLight 필드가 true이면 화면을..
[Noise Detector] 그래픽 모듈 (5) : WaveBars ArrayBundle은 WaveBars가 데이터를 처리하는 단위입니다. WaveBars에 입력된 ArrayBundle은 내부 버퍼인 mBundleList에 담기게 되며 내부 스래드인 mAnimateBars에 의해 하나씩 처리됩니다. 실시간 처리를 위해 WaveDataView의 getView()의 autoAdjustPeriod를 true로 설정하여 버퍼에 4개 이상 쌓이게 되면 처리 주기를 감소시키도록 설정할 수있습니다. 해당 과정은 WaveBars.animateBars()에서 확인할 수 있습니다. mAnimateBars 스래드는 불필요한 스래드의 존재를 막기위해 mBundleLIst가 비워질 때까지 존재하며 이후 제거되고 새로운 ArrayBundle이 입력됐을 때 다시 생성됩니다. 그리고 ArrayBun..