나는 SurfaceView
과 그 사용법을 읽었으며, SurfaceView
에는 View#willNotDraw()
이 기본적으로 false로 설정되어 있으며 SurfaceView#onDraw()
에 전화를 걸었습니다. RomainGuy는 이것이 더 효율적이기 때문에 기본적으로이 작업이 완료되었다고 말했습니다. 내 질문은 이제 언제 SurfaceView#onDraw()
을 별도의 스레드에서 호출해야하는지, View#willNotDraw()
을 true
으로 설정하고 SurfaceView#invalidate()
으로 전화하면됩니까? 둘 사이에는 차이점이 있습니까? 그리고 성능이 다른 것보다 더 향상됩니까?SurfaceView를 언제 UI 스레드로 그려야합니까?
0
A
답변
1
참조 :
http://developer.android.com/reference/android/view/View.html#setWillNotDraw(boolean)
당신이 정보를 어디서 얻었는지 잘 모르겠지만, 적어도 javadoc에서는 대부분의 사용자가 안드로이드는 그것을 onDraw
이벤트 자체를 보낼 얻을 false
로 설정 것이라고 말했다. 이 작업을 수행해야하는시기에 관한 질문에 대해서는 SurfaceView
을 사용하는 이유가 무엇인지에 관해 설명 할 것입니다.
보기가 동적 인 경우 (예 : 게임이나 이벤트 루프가 빡빡한 게임의 경우) 업데이트가 발생하면 정확하게 제어하고 싶을 것입니다. 특히 invalidate
의 자세한 양식은 전체 View
을 다시 그릴 저장합니다. Android가 invalidate
에 전화하는 것을 원하지 않을 것이므로 그 이유가 여기에 있습니다.
반면에 단순히 정적 인 것을 그리는 경우 Android의 UI 스택이 무효화를 제어하도록하는 것이 좋습니다. 그런데
,invalidate
만
View
을 다시 그릴 요청을 게시, 그래서 당신이 이벤트 루프 스타일을 사용하려는 경우이 인식 (
onDraw
은 언젠가 당신이 전화
후 호출됩니다).
편집 : 몇 가지 설명.
1
SurfaceView.onDraw() 및 SurfaceView.invalidate()를 사용하면 SurfaceView가 일반 View처럼 동작하고 SurfaceView와 관련된 추가 오버 헤드를 지불하게됩니다. UI 스레드에서 그리려면 일반보기를 대신 사용하십시오. 더 쉽고 저렴합니다.
관련 문제
- 1. 다른 클래스의 데이터를 주 UI 스레드로 보냅니다.
- 2. AsyncTask에서 Ui 스레드로 데이터를 전달하는 방법
- 3. COM/STA 스레드에서 WPF UI 스레드로 진행되는보고
- 4. UI 스레드와 별도의 스레드로 뷰를 사용합니다.
- 5. WPF 데이터 바인딩 마샬이 UI 스레드로 변경됩니까?
- 6. JSONObject/JSONArray를 AsyncTask에서 UI 스레드로 전달
- 7. Open GL 업데이트 스레드에서 UI 스레드로 UI 스레드를 실행하는 방법
- 8. 파이썬에서 복잡한 숫자를 그려야합니까?
- 9. flex 이미지를 어떻게 그려야합니까?
- 10. 숫자/그래픽을 화면에 직접 그려야합니까?
- 11. 모든 프레임에 SurfaceLayer를 다시 그려야합니까?
- 12. SurfaceView를 통한 AlphaAnimation?
- 13. surfaceview를 사용하여 비디오 캡처하기
- 14. SurfaceView를 객체 생성자에 전달
- 15. resize stop 이벤트는 언제 호출됩니까? (JQuery UI)
- 16. 작업자 스레드에서 UI 스레드로 데이터를 보내는 방법은 무엇입니까?
- 17. AsyncTask를 사용하여 백그라운드 스레드에서 UI 스레드로 이미지를 보내는 방법은 무엇입니까?
- 18. android가 공통 스레드에서 http 데이터를 요청하고 ui 스레드로 문자열을 반환합니다.
- 19. ThreadPool.QueueUserWorkItem의 정보를 UI 스레드로 다시 전달하는 방법은 무엇입니까?
- 20. Android : 백그라운드 스레드에서 UI 스레드로 메시지를 전달하는 적절한 방법은 무엇입니까?
- 21. 타이머 UI 및 위치 정보를 하나의 스레드로 업데이트 하시겠습니까?
- 22. AIDL을 통해 서비스에서 UI 스레드로 전달되는 사용자 정의 클래스
- 23. WinRT/Metro의 UI 스레드로 디스패치해야 하는지를 어떻게 결정합니까?
- 24. 레일에서 다중 스레드로 처리해야하는 상황
- 25. 안드로이드 SurfaceView를 가진 낮은 FPS
- 26. 레이아웃에서 surfaceView를 편집하는 방법은 무엇입니까?
- 27. Android : SurfaceView를 사용하여 초점 다시보기
- 28. Softkeyboard 뒤에있는 SurfaceView를 스크롤하는 방법.
- 29. SurfaceView를 사용하여 활동 종료 문제
- 30. 스레드로 정렬