IT Share you

Android 창이 란 무엇입니까?

shareyou 2020. 11. 9. 21:34
반응형

Android 창이 란 무엇입니까?


WindowAndroid에서 무엇입니까 ?

나는 안드로이드의 최상위 레벨이 Activity당신이 보는 화면 인 이라고 생각했다 .

누군가 Android의 Window가 무엇인지 말해 줄 수 있습니까? 하나 또는 여러 개만 가지고 있습니까?


활동은 창이라고 부르는 것입니다.

기술적으로 말하면 활동이 창을 만듭니다.

많은 수를 가질 수 있지만 일반적으로 동기식은 아닙니다. 추가 정보를 요청하려면 대화 상자를 호출하거나 다른 활동에 인 텐트를 실행할 수 있습니다.

자세한 내용 은이 링크 를 참조하십시오 .


[업데이트] ( Window원래 답변 후 배운 내용 공유 )

한 문장에서 A 는 하나의 뷰 계층이있는 직사각형 영역입니다 . 아래 이미지의 컬러 사각형은 창입니다.Window

여기에 이미지 설명 입력

보시다시피 한 화면에 여러 개의 창이있을 수 있으며 WindowManager가이를 관리합니다. 현재 화면에서 창 목록을 통해 얻을 수 있습니다 계층 구조 뷰어 , 또는 adb shell dumpsys window.

Hierarchy Viewer 예제의 창 목록 : 여기에 이미지 설명 입력

(아래는 원래 답변입니다)


저도 같은 질문을했는데 이것이 여러분에게 도움이되기를 바랍니다.

에 따르면 안드로이드 개발자 용 문서 ,

"각 활동에는 사용자 인터페이스를 그릴 수있는 창이 제공됩니다."

Android 프레임 워크 엔지니어 Dianne Hackborn여기에 몇 가지 정의를 제공 했습니다 . 그녀가 말했다,

은 기본적으로 바탕 화면의 창을 생각하는 것과 같습니다. 그것은 하나의 표면이 윈도우의 내용이 렌더링되는합니다. 응용 프로그램은 창 관리자와 상호 작용하여 창을 만듭니다. 창 관리자는 각 창에 대한 표면을 생성하고 그리기를 위해 응용 프로그램에 제공합니다. 응용 프로그램은 Surface에서 원하는 것을 그릴 수 있습니다. 창 관리자에게 그것은 단지 불투명 한 직사각형 일뿐입니다.

Surface 화면에 합성되는 픽셀을 포함 하는 개체입니다. 화면에 표시되는 모든 창 (대화 상자, 전체 화면 활동, 상태 표시 줄)에는 그려지는 고유 한 표면이 있으며 Surface Flinger는이를 올바른 Z 순서로 최종 디스플레이에 렌더링합니다. 표면에는 일반적으로 이중 버퍼링 렌더링을 수행하기위한 둘 이상의 버퍼 (일반적으로 두 개)가 있습니다. 애플리케이션이 완료 될 때까지 기다릴 필요없이 표면 플린 저가 마지막 버퍼를 사용하여 화면을 합성하는 동안 애플리케이션은 다음 UI 상태를 그릴 수 있습니다. 그림.

보기는 창 내부의 대화 형 UI 요소입니다. 창에는 창의 모든 동작을 제공 하는 단일 뷰 계층이 연결되어 있습니다. 창을 다시 그려야 할 때마다 (예 : 뷰가 자체적으로 무효화 되었기 때문에), 이것은 창의 Surface에서 수행됩니다 . Surface가 잠겨 있으며 캔버스를 반환하는 데 사용할 수 있습니다. 그리기 순회는 계층 구조를 따라 수행되며 각 뷰에 대해 Canvas를 전달하여 UI의 일부를 그립니다. 완료되면 Surface가 잠금 해제되고 게시되어 방금 그린 버퍼가 전경으로 스왑 된 다음 Surface Flinger에 의해 화면에 합성됩니다.

또한 Romain Guy 의 프레젠테이션 에서 다른 정보를 찾았습니다 ( 여기 에서 San Francisco Android 사용자 그룹에서 그의 강연을 볼 수 있으며 여기 에서 전체 슬라이드를 다운로드 할 수 있습니다 ).

여기에 이미지 설명 입력

그래서 간단히 말해서 :

  • Activity창 (사용자 인터페이스를 그리는 창)이 있습니다.
  • a Window에는 단일 Surface및 단일 뷰 계층이 연결되어 있습니다.
  • 보기를 보유 하는 Surface포함 ViewGroup.

Android : 창, 표면, 캔버스 및 비트 맵 다음은 Window, Surface, Canvas 및 Bitmap간에 상호 작용이 발생하는 방식에 대한 매우 기본적이고 간단한 개념적 개요입니다.


간단히 말하고 싶습니다.

Application --->
  Activity --->
    Window Manager --->
      Window --->
        Surface ---> 
          Canvas --->
            View Root ---> 
              View Group --->
                View ---> 
                  Bitmap/Open GL panel ---> 
                    Current Surface Buffer ---> 
                      Surface Flinger --->
                        Screen

참고 URL : https://stackoverflow.com/questions/9451755/what-is-an-android-window

반응형