2013-09-05 3 views
0

Timer 작업으로 초당 한 번씩 업데이트되는 뷰가 두 개 있습니다. 그들은 invalidate() 자체가 "보기 계층 구조를 만든 원래 스레드 만 해당 뷰를 만질 수 있기"때문에 불가능합니다.다른 스레드에서보기를 무효화()하는 방법?

runOnUiThread이라는 기능이 있지만이를 실행하려면 Activity가 필요합니다.

이 문제를 어떻게 해결할 수 있습니까?

편집 :이게 무엇입니까 postInvalidate()은 무엇입니까? UI 스레드가 사용 중이 아닌 경우 무효화 및 업데이트가 곧 수행된다는 것을 어떻게 보장합니까?

+0

왜 그런 사소한 작업을하기 위해 타이머 (및 그 뒤에있는 스레드)를 사용합니까? – pskink

+0

@pskink 타이머가 블루투스 리스너 스레드를 조롱하고 있습니다. – Andreas

답변

1

1)

이 postInvalidate은()에 대한 무엇인가?

According to the Docs

사용이 아닌 UI 스레드에서보기를 무효화합니다.

invalidate() 나는 무효화 및 업데이트가 곧 일어날 것이라고 어떻게 보장 UI Thread

2)

Views를 업데이트하고있다 (UI 스레드)이 바쁜없는 경우?

또한

원인이 무효화 이벤트 루프를 통해 후속 사이클에서 발생하는 문서의 같은 부분에서

그래서 나는 이것이 곧 "의 당신의 정의에 따라 달라집니다 것 같아요 ". 문서가 다음 이벤트 루프에서 발생해야한다고 말하기 때문에