2013-11-09 3 views
2

Android 시계 위젯을 작성했습니다. 위젯에는 gif 애니메이션이 포함되어 있습니다.내 Android 위젯이보기 새로 고침을 중단합니다.

위젯에는 뷰를 유지 관리하는 자체 서비스가 있습니다. 그리고 애니메이션을 재생하는 스레드.

명확하지 않은 이유 때문에 위젯이 시작된 후 어느 시점에서보기가 멈추는 것처럼 애니메이션 재생이 중지됩니다. 처음에는 기본 서비스가 중단되었거나 스레드 중 하나가 교착 상태에 있다고 생각했습니다.

내가 발견 한 것은 모든 것이 완벽하게 실행되며보기 만 변경되지 않는다는 것입니다.

정상적인 응용 프로그램보기 인 경우보기에서 invalidate()를 호출해야한다고 생각했지만 RemoteViews에는 이러한 호출이 없습니다.

누구나 이와 비슷한 문제가 있습니까?

답변

-1

UI가 아닌 스레드에서 invalidate()를 호출 할 수 있습니다. invalidate() 메서드는 UI 스레드에서만 호출되어야합니다. 이 경우 invalidate() 대신 postInvalidate()를 사용하십시오.

은 더 많은 정보를 원하시면

http://developer.android.com/reference/android/view/View.html#postInvalidate%28%29

+0

postInvalidate() (내가 아는까지) 만 창 내에서보기로 보낼 수 있습니다를 다음 문서를 참조하십시오. 위젯보기는 RemoteView를 통해서만이 방법으로 액세스 할 수 있습니다. 또는 나는 무엇인가 놓치고 있냐? – Haggai

+0

확인. 원격 뷰의 경우 브로드 캐스트 리시버를 사용해야합니다. 필요한 값을 브로드 캐스팅하고 onReceive() 메서드를 통해 값을 받으면 onReceive() 자체에서 onUpdate()를 호출합니다. 나는 이것이 잘 동작 할 것이라고 생각합니다. 를 참조하십시오. – Sripathi