{"id":38511,"date":"2019-12-07T22:10:04","date_gmt":"2019-12-07T13:10:04","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=38511"},"modified":"2019-12-07T22:10:04","modified_gmt":"2019-12-07T13:10:04","slug":"%eb%a0%8c%eb%8d%94%eb%a7%81-%eb%90%98%eb%8a%94-view%ec%9d%98-%eb%82%b4%eb%b6%80%eb%a5%bc-%ec%82%b4%ed%8e%b4%eb%b3%b4%ec%9e%90","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=38511","title":{"rendered":"\ub80c\ub354\ub9c1 \ub418\ub294 View\uc758 \ub0b4\ubd80\ub97c \uc0b4\ud3b4\ubcf4\uc790"},"content":{"rendered":"<h1>\ub80c\ub354\ub9c1 \ub418\ub294 View\uc758 \ub0b4\ubd80\ub97c \uc0b4\ud3b4\ubcf4\uc790<\/h1>\n<p>\ub354 \ub098\uc740 \uc774\ud574\ub97c \uc704\ud574 \uc774\uc804 \ud3ec\uc2a4\ud305\uc778 <a href=\"https:\/\/www.charlezz.com\/?p=34935\">\uc548\ub4dc\ub85c\uc774\ub4dc View\uac00 \ub80c\ub354\ub9c1 \ub418\ub294 \uacfc\uc815<\/a>\uc744 \uba3c\uc800 \ucc38\uc870\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>\ub80c\ub354\ub9c1\ud558\ub294 \ub3d9\uc548 \uc0ac\uc6a9\ub418\ub294 \ucef4\ud3ec\ub10c\ud2b8, \ub514\uc2a4\ud50c\ub808\uc774 \ud30c\uc774\ud504 \ub77c\uc778 \ubc0f UI\uc640 \ud558\ub4dc\uc6e8\uc5b4\uac04 \ub3d9\uae30\ud654\uac00 \ubc1c\uc0dd\ud558\ub294 \ubc29\uc2dd \ub4f1 \ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc744 \ud30c\uc545\ud558\uae30 \uc704\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \ub0b4\uc6a9\ub4e4\uc744 \uc54c\uc544\uc57c\ud55c\ub2e4.<\/p>\n<h2>UI\uc2a4\ub808\ub4dc<\/h2>\n<p>\ubaa8\ub4e0 \uc571\uc740 UI \uc2a4\ub808\ub4dc\uc5d0\uc11c View\ub97c \uadf8\ub9ac\uac8c \ub41c\ub2e4. \uc624\uc9c1 UI \uc2a4\ub808\ub4dc\ub9cc\uc774 View\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4. (\ubc31\uadf8\ub77c\uc6b4\ub4dc \uc2a4\ub808\ub4dc\uc5d0\uc11c \ud14d\uc2a4\ud2b8\ub098, \uc774\ubbf8\uc9c0\ub97c \ubcc0\uacbd\ud558\ub824\ub2e4\uac00 \ud06c\ub798\uc2dc\uac00 \ubc1c\uc0dd\ud588\ub358 \uacbd\ud5d8\ub4e4\uc774 \ub2e4 \uc788\uc744 \uac83\uc774\ub2e4.)<\/p>\n<p>\uac04\ub2e8\ud788 \ub9d0\ud574 UI\uc2a4\ub808\ub4dc\uc758 \uc5ed\ud560\uc740 \ub80c\ub354 \uc2a4\ub808\ub4dc(Render Thread)\uc5d0\uc11c \uc2e4\ud589\ub420 \uba85\ub839\uc5b4 \ud30c\uc774\ud504\ub77c\uc778\uc744 \uc900\ube44\ud55c\ub2e4. \uc5c4\ubc00\ud788 \ub9d0\ud574 UI\uc2a4\ub808\ub4dc\ub294 \ubdf0\uc758 \uc0dd\uba85\uc8fc\uae30\ub97c \ucc98\ub9ac\ud558\uc5ec \ub80c\ub354\ub9c1\uc5d0 \ud544\uc694\ud55c \uc815\ubcf4\ub97c \uc0dd\uc131\ud55c\ub2e4. \uc774\uac83\uc740 UI\uc2a4\ub808\ub4dc\uac00 \ubdf0\uc758 onMeasure(), onLayout(), onDraw()\uc640 \uac19\uc740 \ucf5c\ubc31\uc744 \uc2e4\ud589\ud558\uace0 \uc815\ubcf4\ub97c \uc218\uc9d1\ud558\uc5ec \ub80c\ub354 \uc2a4\ub808\ub4dc\ub85c \uc804\ub2ec\ub418\ub294 \uac83\uc744 \ub9d0\ud55c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38629\" rel=\"attachment wp-att-38629\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_DG1w4reiWvdIfhsC7ll5og-1024x452.jpg\" alt=\"\" width=\"750\" height=\"331\" class=\"aligncenter size-large wp-image-38629\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_DG1w4reiWvdIfhsC7ll5og-1024x452.jpg 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_DG1w4reiWvdIfhsC7ll5og-300x133.jpg 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_DG1w4reiWvdIfhsC7ll5og-768x339.jpg 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_DG1w4reiWvdIfhsC7ll5og.jpg 1920w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h2>\ub80c\ub354 \uc2a4\ub808\ub4dc(Render Thread)<\/h2>\n<p>\ub80c\ub354 \uc2a4\ub808\ub4dc\ub294 \ub864\ub9ac\ud31d\uc5d0\uc11c \ub3c4\uc785\ub41c \ucef4\ud3ec\ub10c\ud2b8\ub85c UI\uc2a4\ub808\ub4dc\uc5d0\uc11c \uc785\ub825\uc744 \ubc1b\uc544 GPU\ub85c \ucc98\ub9ac\ud55c\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c\ub294 UI\uc2a4\ub808\ub4dc\uc640 \ub80c\ub354 \uc2a4\ub808\ub4dc\uac00 \uc21c\ucc28\uc801\uc73c\ub85c \uc791\ub3d9\ud558\uc9c0\ub9cc, \uc77c\ubd80 \uc560\ub2c8\uba54\uc774\uc158 \ubc0f \uae30\ud0c0 \ud56d\ubaa9\uc5d0\uc11c\ub294 \ube44\ub3d9\uae30\ub85c \uc791\ub3d9\ud558\uac8c \ub41c\ub2e4. \uc774\uc804\uc5d0\ub294 \uc561\ud2f0\ube44\ud2f0 \uc804\ud658\uacfc \uac19\uc774 \ubb34\uac70\uc6b4 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \ub3d9\uc548 \ubdf0 \uc18d\uc131\uc744 \ubd80\ub4dc\ub7fd\uac8c \uc560\ub2c8\uba54\uc774\uc158 \ud558\ub294 \uac83\uc774 \uc0ac\uc2e4\uc0c1 \ubd88\uac00\ub2a5 \ud588\uc9c0\ub9cc, \ub864\ub9ac\ud31d\ubd80\ud130\ub294 \uc774\ub7ec\ud55c \uc560\ub2c8\uba54\uc774\uc158 \ubc0f \ubb3c\uacb0(Ripple)\ud6a8\uacfc\uac00 \uc790\uc5f0\uc2a4\ub7fd\uac8c \uc801\uc6a9\ub41c\ub2e4. \uc774\ub7ec\ud55c \ub9c8\ubc95\uac19\uc740 \uc77c\uc740 \ubaa8\ub450 RenderThread \ub355\ubd84\uc774\ub2e4.<a href=\"https:\/\/www.charlezz.com\/?attachment_id=38628\" rel=\"attachment wp-att-38628\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_taPswAEgNebPaek9_jXvhg.jpg\" alt=\"\" width=\"800\" height=\"476\" class=\"aligncenter size-full wp-image-38628\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_taPswAEgNebPaek9_jXvhg.jpg 800w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_taPswAEgNebPaek9_jXvhg-300x179.jpg 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_taPswAEgNebPaek9_jXvhg-768x457.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<h2>Choreographer(\ucf54\ub808\uc624\uadf8\ub798\ud37c)<\/h2>\n<p>Choreographer\ub294 \ud558\uc704 \uacc4\uce35\uc758 \ub514\uc2a4\ud50c\ub808\uc774 \uc2dc\uc2a4\ud15c\uacfc \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uacc4\uce35\uc758 \ubdf0 \uc2dc\uc2a4\ud15c\uac04\uc758 \ub2e4\ub9ac\uc5ed\ud560\uc744 \ud558\ub294 \ud074\ub798\uc2a4\uc774\ub2e4. Choreographer\ub294 \ub514\uc2a4\ud50c\ub808\uc774 \uc11c\ube0c \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc218\uc9c1 \ub3d9\uae30\ud654\uc640 \uac19\uc740 \ud0c0\uc774\ubc0d \ud384\uc2a4\ub97c \uc218\uc2e0 \ud55c \ud6c4 \ub2e4\uc74c \ub514\uc2a4\ud50c\ub808\uc774 \ud504\ub808\uc784 \ub80c\ub354\ub9c1\uc758 \uc77c\ubd80\ub85c \uc791\uc5c5\uc774 \ubc1c\uc0dd\ud558\ub3c4\ub85d \uc2a4\ucf00\uc904\ud55c\ub2e4.<\/p>\n<p><span>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \uc560\ub2c8\uba54\uc774\uc158 \ud504\ub808\uc784\uc6cc\ud06c \ub610\ub294 \ubdf0 \uacc4\uce35\uc5d0\uc11c \ub354 \ub192\uc740 \uc218\uc900\uc758 \ucd94\uc0c1\ud654\ub97c \uc0ac\uc6a9\ud558\uc5ec Choreographer\uc640 \uac04\uc811\uc801\uc73c\ub85c \uc0c1\ud638 \uc791\uc6a9\ud55c\ub2e4.<\/span><\/p>\n<p><span>\ub2e4\uc74c\uc740 \uace0\uae09 API\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc218\ud589 \ud560 \uc218\uc788\ub294 \uba87 \uac00\uc9c0 \uc608\uc81c\uac00 \uc788\ub2e4.<\/span><\/p>\n<ul>\n<li>\ub514\uc2a4\ud50c\ub808\uc774 \ud504\ub808\uc784 \ub80c\ub354\ub9c1\uacfc \ub3d9\uae30\ud654\ub41c \uc560\ub2c8\uba54\uc774\uc158\uc744 \uac8c\uc2dc\ud558\ub824 ValueAnimator.start()\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/li>\n<li>\ub2e4\uc74c \ud504\ub808\uc784\uc758 \uc2dc\uc791 \ubd80\ubd84\uc5d0\uc11c Runnable \ud55c \ubc88 \ud638\ucd9c\ud558\uae30 \uc704\ud574\uc11c View.postOnAnimation()\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/li>\n<li>\uc9c0\uc5f0 \ud6c4 \ub2e4\uc74c \ud504\ub808\uc784\uc758 \uc2dc\uc791 \ubd80\ubd84\uc5d0\uc11c Runnable\uc744 \ud55c \ubc88 \ud638\ucd9c \ud558\ub824\uba74 View.postOnAnimationDelayed()\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/li>\n<li>\ub2e4\uc74c \ub514\uc2a4\ud50c\ub808\uc774 \ud504\ub808\uc784\uc758 \uc2dc\uc791 \ubd80\ubd84\uc5d0\uc11c View.invalidate() \ud638\ucd9c\ud558\ub3c4\ub85d \ud558\ub824\uba74 View.postInvalidateOnAnimation () \ub610\ub294 View.postInvalidateOnAnimation (int, int, int, int)\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/li>\n<li>\ub514\uc2a4\ud50c\ub808\uc774 \ud504\ub808\uc784 \ub80c\ub354\ub9c1\uacfc \ub3d9\uae30\ud654 \ub418\uc5b4 \ubdf0\uc758 \ub0b4\uc6a9\uc774 \ubd80\ub4dc\ub7fd\uac8c \uc2a4\ud06c\ub864\ub418\uac8c \uadf8\ub9ac\ub294\uac83\uc740 View.onDraw\uc5d0\uc11c \uc774\ubbf8 \uc801\uc808\ud558\uac8c \uc790\ub3d9\uc73c\ub85c \ucc98\ub9ac\uac00 \ub418\uace0 \uc788\ub2e4.\u00a0<\/li>\n<\/ul>\n<p><span>\uac01 \ub8e8\ud37c \uc2a4\ub808\ub4dc\uc5d0\ub294 \uc790\uccb4 Choreographer\uac00 \uc788\ub2e4. \ub2e4\ub978 \uc2a4\ub808\ub4dc\ub294 Choreographer\uc5d0\uc11c \uc2e4\ud589\ud560 \ucf5c\ubc31\uc744 \uac8c\uc2dc \ud560 \uc218 \uc788\uc9c0\ub9cc Choreographer\uac00 \uc18d\ud55c \ub8e8\ud37c\uc5d0\uc11c \uc2e4\ud589\ub41c\ub2e4.<\/span><\/p>\n<h2>V-Sync(\uc218\uc9c1 \ub3d9\uae30\ud654)<\/h2>\n<p>V-Sync(Vertical Synchronization)\ub97c \uc54c\uae30 \uc704\ud574\uc11c\ub294 \ub9ac\ud504\ub808\uc2dc \ub808\uc774\ud2b8(Refresh rate)\uc640 \ud504\ub808\uc784 \ub808\uc774\ud2b8(Frame rate) \ub450 \uc6a9\uc5b4\uc5d0 \ub300\ud574 \uc54c\uc544\uc57c\ud55c\ub2e4. \ub9ac\ud504\ub808\uc2dc \ub808\uc774\ud2b8\ub294 \ud654\uba74 \uc8fc\uc0ac\uc728\uc774 \ucd08\ub2f9 \uba87 \ubc88\uc529 \ud654\uba74\uc744 \uc5c5\ub370\uc774\ud2b8 \ud560 \uc218 \uc788\ub294\uc9c0\ub97c \ub098\ud0c0\ub0b4\uace0, \ud504\ub808\uc784 \ub808\uc774\ud2b8\ub294 GPU\uac00 \ucd08\ub2f9 \ud504\ub808\uc784\uc744 \uadf8\ub9b4 \uc218 \uc788\ub294 \ud69f\uc218\ub97c \uc758\ubbf8\ud55c\ub2e4. \ub458 \ub2e4 \uc774\ubbf8\uc9c0\ub97c \ud654\uba74\uc5d0 \uc62c\ubc14\ub974\uac8c \uadf8\ub9ac\ub824\uba74 \ud568\uaed8 \uc791\ub3d9\ud574\uc57c \ud55c\ub2e4. \uc774 \ub458\uc774 \ub3d9\uc77c\ud55c \ube48\ub3c4\ub85c \ubc1c\uc0dd\ud55c\ub2e4\ub294 \ubcf4\uc7a5\uc740 \uc5c6\ub2e4. \ub3d9\uc77c\ud55c \ube48\ub3c4\ub85c \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \ub208\uc5d0 \ub74c\ub9cc\ud55c \ubd88\uc644\uc804\ud55c \ud504\ub808\uc784\uc774 \ud654\uba74\uc5d0 \uadf8\ub824\uc9c0\uac8c \ub41c\ub2e4.<\/p>\n<p>GPU\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ubc84\ud37c\ub85c \ubc31 \ubc84\ud37c(Back buffer)\uc640 \ud504\ub808\uc784 \ubc84\ud37c(Frame buffer)\uac00 \uc788\ub2e4. \ubc31 \ubc84\ud37c\ub294 \ud504\ub808\uc784\uc744 \uadf8\ub9ac\ub294 \ub370 \uc0ac\uc6a9\ub41c\ub2e4. \ubc31\ubc84\ud37c\uc5d0\uc11c \uc791\uc5c5\uc774 \uc644\ub8cc\ub418\uba74 GPU\uac00 \ud574\ub2f9 \ud504\ub808\uc784\uc744 \ud504\ub808\uc784 \ubc84\ud37c\uc5d0 \ubcf5\uc0ac\ud55c\ub2e4. \uac04\ub2e8\ud788 \ub9d0\ud574, \ud504\ub808\uc784 \ubc84\ud37c\ub294 \ud654\uba74\uc5d0 \ub80c\ub354\ub9c1\ud574\uc57c\ud558\ub294 \ub370\uc774\ud130\ub97c \ubcf4\uc720\ud558\uac8c \ub41c\ub2e4. \uadf8\ub7ec\ub098 \ucf58\ud150\uce20\ub97c \ubc31\ubc84\ud37c\uc5d0\uc11c \ud504\ub808\uc784 \ubc84\ud37c\ub85c \ubcf5\uc0ac\ud558\ub294 \ub3d9\uc548 \ud504\ub808\uc784 \ubc84\ud37c\ub97c \ucc38\uc870\ud558\uac8c \ub418\uba74 \ubb38\uc81c\uac00 \ub41c\ub2e4. \ub2e4\uc74c \uadf8\ub9bc\uc744 \ucc38\uc870\ud558\uc790<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38778\" rel=\"attachment wp-att-38778\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/22803_31646_322.jpg\" alt=\"\" width=\"600\" height=\"225\" class=\"aligncenter size-full wp-image-38778\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/22803_31646_322.jpg 600w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/22803_31646_322-300x113.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38660\" rel=\"attachment wp-att-38660\"><\/a><\/p>\n<p>\uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ub9c9\uae30 \uc704\ud574 V-Sync\uac00 \ud544\uc694\ud558\ub2e4. V-Sync\ub294 \ud654\uba74\uc774 \uc0c8\ub85c \uace0\uccd0\uc9c8 \uacbd\uc6b0 \ubc31\ubc84\ud37c\uc5d0\uc11c \ud504\ub808\uc784 \ubc84\ud37c\ub85c\uc758 \ubcf5\uc0ac \uc791\uc5c5\uc744 \uc720\uc9c0\ud558\uac8c \ub418\uace0, \ud504\ub808\uc784 \ubc84\ud37c\uc5d0 \uc644\uc804\ud788 \uadf8\ub824\uc9c4 \ud504\ub808\uc784\uc740 \ud654\uba74\uc5d0 \ub80c\ub354\ub9c1\ub41c\ub2e4. \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud06c\ub9b0\uc740 \ubcf4\ud1b5 \ucd08\ub2f9 60\ud68c(60fps)\ub97c \ud654\uba74\uc5d0 \uadf8\ub9ac\ub294\ub370, 1\ud504\ub808\uc784\uc744 \uadf8\ub9ac\uae30 \uc704\ud55c \uc900\ube44\uc2dc\uac04\uc774 \uc57d16.66ms\ub77c\ub294 \ub73b\uc774\ub2e4.\u00a0<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38777\" rel=\"attachment wp-att-38777\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/img1.daumcdn.png\" alt=\"\" width=\"555\" height=\"284\" class=\"aligncenter size-full wp-image-38777\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/img1.daumcdn.png 555w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/img1.daumcdn-300x154.png 300w\" sizes=\"(max-width: 555px) 100vw, 555px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>SurfaceFlinger<\/h2>\n<p>SurfaceFlinger\uc758 \uc5ed\ud560\uc740 \uc785\ub825\ub41c \ubc84\ud37c\ub4e4\uc744 \ud569\uc131\ud558\uc5ec \ub514\uc2a4\ud50c\ub808\uc774\ub85c \ubcf4\ub0b4\ub294 \uc5ed\ud560\uc744 \ud55c\ub2e4.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" border=\"1\" vspace=\"5\" src=\"http:\/\/oss.kr\/oss\/images\/news\/000000005680-0000.jpg\" width=\"600\" height=\"450\" \/><\/p>\n<p>SurfaceFlinger\ub294 \ub450\uac00\uc9c0 \ubc29\ubc95\uc73c\ub85c \ubc84\ud37c\ub97c \ucc98\ub9ac\ud558\ub294\ub370 BufferQueue \ubc0f SurfaceControl \ub610\ub294 ASurfaceControl\uc744 \ubc1b\ub294 \ubc29\ubc95\uc774\ub2e4.<\/p>\n<p>BufferQueue \ubc0f SurfaceControl\uc744 \uc0ac\uc6a9\ud560 \ub54c\ub294 \uc571\uc774 \ud3ec\uc5b4\uadf8\ub77c\uc6b4\ub4dc\uc0c1\ud0dc\uc774\uba74,\u00a0 WindowManager \uc5d0\uc11c \ubc84\ud37c\ub97c \uc694\uccad\ud558\uace0, \uadf8\ub7f0 \ub2e4\uc74c WindowManager\ub294 SurfaceFlinger\uc5d0\uc11c \ub808\uc774\uc5b4\ub97c \uc694\uccad\ud55c\ub2e4. \ub808\uc774\uc5b4\ub294 BufferQueue\ub97c \ud3ec\ud568\ud558\ub294 Surface\uc640 \ub514\uc2a4\ud50c\ub808\uc774 \ud504\ub808\uc784\uacfc \uac19\uc740 \ub808\uc774\uc5b4 \uba54\ud0c0 \ub370\uc774\ud130\ub97c \ud3ec\ud568\ud558\ub294 SurfaceControl\uc758 \uc870\ud569\uc774\ub2e4. SurfaceFlinger\ub294 \ub808\uc774\uc5b4\ub97c \ub9cc\ub4e4\uc5b4 WindowManager\ub85c \ubcf4\ub0b8\ub4a4 WindowManager\ub294 Surface\ub97c \uc571\uc73c\ub85c \ubcf4\ub0b4\uc9c0\ub9cc SurfaceControl\uac00 \ud654\uba74\uc5d0\uc11c \uc571\uc758 \uc678\uad00\uc744 \uc870\uc791\ud558\ub3c4\ub85d \ud55c\ub2e4.<\/p>\n<p>Android 10\uc5d0\uc11c\ub294 ASurfaceControl\uc774 \ucd94\uac00\ub418\uc5b4 SurfaceFlinger\uac00 \ubc84\ud37c\ub97c \ubc1b\ub294 \ubc29\ubc95\uc774 \ucd94\uac00\ub418\uc5c8\ub2e4. ASurfaceControl\uc740 Surface\uc640 SurfaceControl\uc744 SurfaceFlinger\ub85c \uc804\uc1a1\ub418\ub294 \ud558\ub098\uc758 \ud2b8\ub79c\uc7ad\uc158 \ud328\ud0a4\uc9c0\ub85c \uacb0\ud569\ud55c\ub2e4. ASurfaceControl\uc740 ASurfaceTransactions\ub97c \ud1b5\ud574 \uc571\uc774 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \uacc4\uce35\uacfc \uc5f0\uacb0\ub418\uace0, \uc571\uc740 \ub798\uce58 \uc2dc\uac04(latch time), \ud68d\ub4dd \uc2dc\uac04(acquire times) \ub4f1\uacfc \uac19\uc740 \uc815\ubcf4\uac00 \ud3ec\ud568\ub41c ASurfaceTransactionStats\ub97c \uc804\ub2ec\ud558\ub294 \ucf5c\ubc31\uc744 \ud1b5\ud574 ASurfaceTransactions\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \uc5bb\uac8c \ub41c\ub2e4.<\/p>\n<p>\ub2e4\uc74c \ud45c\uc5d0\ub294 ASurfaceControl \ubc0f \uad00\ub828 \uad6c\uc131 \uc694\uc18c\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4.<\/p>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr style=\"background-color: #f7f7f7;\">\n<td style=\"width: 37.1118%;\"><span>Component<\/span><\/td>\n<td style=\"width: 62.8882%;\"><span>Description<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 37.1118%;\"><span>ASurfaceControl<\/span><\/td>\n<td style=\"width: 62.8882%;\">SurfaceControl\uc744 \ub798\ud551\ud558\uace0 \uc571\uc774 \ub514\uc2a4\ud50c\ub808\uc774\uc758 \ub808\uc774\uc5b4\uc5d0 \ud574\ub2f9\ud558\ub294 SurfaceControl\uc744 \ub9cc\ub4e4 \uc218 \uc788\ub3c4\ub85d \ud55c\ub2e4. ANativeWindow\uc758 \uc11c\ube0c\ud074\ub798\uc2a4 \ub610\ub294\u00a0 ASurfaceControl\uc758 \ub610 \ub2e4\ub978 \uc11c\ube0c\ud074\ub798\uc2a4\ub85c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 37.1118%;\">ASurfaceTransaction<\/td>\n<td style=\"width: 62.8882%;\">\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc9c0\uc624\uba54\ud2b8\ub9ac\uc640 \uac19\uc740 \ub808\uc774\uc5b4\uc758 \uc124\uba85 \uc18d\uc131\uc744 \ud3b8\uc9d1 \ud560 \uc218 \uc788\ub3c4\ub85d \ud2b8\ub79c\uc7ad\uc158\uc744 \ub798\ud551\ud558\uace0 \uc5c5\ub370\uc774\ud2b8 \ub41c \ubc84\ud37c\ub97c SurfaceFlinger\ub85c \ubcf4\ub0b8\ub2e4.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 37.1118%;\">ASurfaceTransactionStats<\/td>\n<td style=\"width: 62.8882%;\">\uc0ac\uc804 \ub4f1\ub85d \ub41c \ucf5c\ubc31\uc744 \ud1b5\ud574 \ub798\uce58 \uc2dc\uac04, \ud68d\ub4dd \uc2dc\uac04 \ubc0f \uc774\uc804 \ub9b4\ub9ac\uc2a4 \ud39c\uc2a4\uc640 \uac19\uc740 \uc81c\uc2dc\ub41c \ud2b8\ub79c\uc7ad\uc158\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \uc571\uc5d0 \ubcf4\ub0b8\ub2e4.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\uc571\uc5d0\uc11c \uc5b8\uc81c\ub4e0\uc9c0 \ubc84\ud37c\ub97c \ub0b4\ubcf4\ub0bc\uc218 \uc788\uc9c0\ub9cc SurfaceFlinger\ub294 \uc7a5\uce58\uc5d0 \ub530\ub77c \ub2e4\ub97c \uc218 \uc788\ub294 \ub514\uc2a4\ud50c\ub808\uc774 \uac31\uc2e0 \uc8fc\uae30 \uc0ac\uc774\uc758 \ubc84\ud37c\ub9cc \ud5c8\uc6a9\ud558\ub3c4\ub85d \uae68\uc5b4\ub09c\ub2e4. \uc774\ub807\uac8c\ud558\uba74 \uba54\ubaa8\ub9ac \uc0ac\uc6a9\uc774 \ucd5c\uc18c\ud654 \ub418\uace0 \ud654\uba74\uc774 \uc0c8\ub85c \uace0\uccd0\uc9c8 \ub54c \ubc1c\uc0dd\ud560 \uc218\uc788\ub294 \ud654\uba74\uc758 \ubd88\uc644\uc804\uc131\uc744 \ud53c\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>\ub514\uc2a4\ud50c\ub808\uc774\uac00 \uac31\uc2e0 \uc8fc\uae30 \uc0ac\uc774\uc5d0 \uc788\uc73c\uba74 \ub514\uc2a4\ud50c\ub808\uc774\ub294 V-Sync\uc2e0\ud638\ub97c SurfaceFlinger\ub85c \ubcf4\ub0b4\uac8c \ub418\uace0\u00a0 V-Sync \uc2e0\ud638\ub85c \uc778\ud574 \uc628\uc804\ud55c \uc0c1\ud0dc\uc758 \ud654\uba74\uc744 \ubcf4\uac8c \ub41c\ub2e4.<\/p>\n<p>SurfaceFlinger\uac00 \uc0c8\ub85c\uc6b4 \ubc84\ud37c\ub97c \ucc3e\uc73c\uba74 \uc0c8\ub85c\uc6b4 \ubc84\ud37c\ub97c \ud68d\ub4dd\ud558\uace0, \uadf8\ub807\uc9c0 \uc54a\uc740 \uacbd\uc6b0 SurfaceFlinger\ub294 \uc774\uc804\uc5d0 \ud68d\ub4dd\ud55c \ubc84\ud37c\ub97c \uacc4\uc18d \uc0ac\uc6a9\ud55c\ub2e4. SurfaceFlinger\ub294 \ud56d\uc0c1 \ubb34\uc5b8\uac00\ub97c \ud45c\uc2dc\ud574\uc57c\ud558\ubbc0\ub85c \ud558\ub098\uc758 \ubc84\ud37c\ub97c \uaf2d \uc950\uace0 \uc788\ub294\ub2e4. \ub808\uc774\uc5b4\uc5d0 \ubc84\ud37c\uac00 \uc81c\ucd9c\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \ub808\uc774\uc5b4\ub294 \ubb34\uc2dc\ub41c\ub2e4.<\/p>\n<p>SurfaceFlinger\ub294 \uac00\uc2dc\uc801\uc778 \ub808\uc774\uc5b4\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \ubc84\ud37c\ub97c \uc218\uc9d1 \ud55c \ud6c4 \ud558\ub4dc\uc6e8\uc5b4 \ucef4\ud3ec\uc800 (HWC)\uc5d0\uac8c \uc5b4\ub5a4\uc2dd\uc73c\ub85c \ud569\uc131\ud560 \uac83\uc778\uc9c0\ub97c \ubb3b\uace0, \ud558\ub4dc\uc6e8\uc5b4 \ucef4\ud3ec\uc800\uac00 \ub808\uc774\uc5b4 \ucef4\ud3ec\uc9c0\uc158 \ud0c0\uc785\uc744 \ud074\ub77c\uc774\uc5b8\ud2b8 \ucef4\ud3ec\uc9c0\uc158\uc73c\ub85c \uc124\uc815\ud558\uba74 SurfaceFlinger\uac00 \ud574\ub2f9 \ub808\uc774\uc5b4\ub97c \ud569\uc131\ud55c\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c SurfaceFlinger\ub294 \ucd9c\ub825 \ubc84\ud37c\ub97c \ud558\ub4dc\uc6e8\uc5b4 \ucef4\ud3ec\uc800\ub85c \uc804\ub2ec\ud55c\ub2e4.<\/p>\n<h2>BufferQueue<\/h2>\n<p>\ubc84\ud37c\ub294 \ub2e8\uc21c\ud788 \ub2e4\ub978 \uc7a5\uc18c\ub85c \uc774\ub3d9\ud558\ub294 \ub3d9\uc548 \ubb34\uc5b8\uac00\ub97c \uc77c\uc2dc\uc801\uc73c\ub85c \uc800\uc7a5\ud558\uae30 \uc704\ud574 \ud560\ub2f9 \ub41c \uba54\ubaa8\ub9ac \uc601\uc5ed\uc774\ub2e4. \ubc84\ud37c \ud050\ub294 \uadf8\ub798\ud53d \ubc84\ud37c\uac00 \uc874\uc7ac\ud558\ub294 \ud050\uc778\ub370, \uc77c\ubc18\uc801\uc73c\ub85c 1 ~ 3 \uac1c\uc758 \ubc84\ud37c\uac00 \uc788\ub2e4. \ubc84\ud37c\ud050\uc5d0\ub294 \uc8fc\ub85c \ub450 \uac1c\uc758 \uc720\ud615\uc774(endpoint) \uc788\ub2e4. \ud558\ub098\ub294 \uc0dd\uc0b0\uc790(Producer)\uc774\uace0 \ub2e4\ub978 \ud558\ub098\ub294 \uc18c\ube44\uc790(Consumer)\uc774\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38808\" rel=\"attachment wp-att-38808\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_VeyvlKoRcQycijX3Sy-LLA.png\" alt=\"\" width=\"481\" height=\"149\" class=\"aligncenter size-full wp-image-38808\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_VeyvlKoRcQycijX3Sy-LLA.png 481w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_VeyvlKoRcQycijX3Sy-LLA-300x93.png 300w\" sizes=\"(max-width: 481px) 100vw, 481px\" \/><\/a><\/p>\n<p>1\ub2e8\uacc4 : \uc0dd\uc0b0\uc790\uac00 \ud050\uc5d0\uc11c dequeueBuffer()\ub97c \ud638\ucd9c\ud558\uba74 \ubc84\ud37c \uc0c1\ud0dc\uac00 DEQUEUED\uac00 \ub418\uace0, \uc774\uc81c \ubc84\ud37c\uc758 \uc18c\uc720\uc790\ub294 \uc0dd\uc0b0\uc790\uc774\uba70 OpenGL \ub610\ub294 Canvas\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub80c\ub354\ub9c1 \ub4f1\uc744 \ud1b5\ud574 \ubc84\ud37c\ub97c \ucc44\uc6b0\uac8c \ub41c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38809\" rel=\"attachment wp-att-38809\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_E-hp1WbjqvnakYoPjgK-9A-1024x383.png\" alt=\"\" width=\"750\" height=\"281\" class=\"aligncenter size-large wp-image-38809\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_E-hp1WbjqvnakYoPjgK-9A-1024x383.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_E-hp1WbjqvnakYoPjgK-9A-300x112.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_E-hp1WbjqvnakYoPjgK-9A-768x287.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>2\ub2e8\uacc4 : \uc0dd\uc0b0\uc790\uac00 \ubc84\ud37c\ub97c \ucc44\uc6b4 \ud6c4\uc5d0\ub294 \ubc84\ud37c\uac00 BufferQueue\ub85c \ub2e4\uc2dc \ud050\uc789\ub418\ub3c4\ub85d queueBuffer()\ub97c \ud638\ucd9c\ud55c\ub2e4. \uc774\ub54c \ubc84\ud37c \uc0c1\ud0dc\ub294 DEQUEUED\uc5d0\uc11c QUEUED\ub85c \ubcc0\uacbd\ub418\uace0 \ubc84\ud37c\uc758 \uc18c\uc720\uc790\ub294 BufferQueue\uac00 \ub41c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38810\" rel=\"attachment wp-att-38810\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_dxR1mpHgQopcw5fF_iIHDA-1024x383.png\" alt=\"\" width=\"750\" height=\"281\" class=\"aligncenter size-large wp-image-38810\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_dxR1mpHgQopcw5fF_iIHDA-1024x383.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_dxR1mpHgQopcw5fF_iIHDA-300x112.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_dxR1mpHgQopcw5fF_iIHDA-768x287.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>3\ub2e8\uacc4 : \uc774\uc81c \uc18c\ube44\uc790\ub294 BufferQueue\uc5d0\uc11c acquireBuffer()\ub97c \ud638\ucd9c\ud558\uace0 \ud050\uc5d0\uc11c \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ubc84\ud37c\ub97c \uac00\uc838\uc628\ub2e4. \uc774\uc81c \uc18c\ube44\uc790\uac00 \ubc84\ud37c\uc758 \uc18c\uc720\uc790\uac00 \ub418\uace0, \ubc84\ud37c \uc0c1\ud0dc\ub294 QUEUED\uc5d0\uc11c ACQUIRED\ub85c \ubcc0\uacbd\ub41c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38811\" rel=\"attachment wp-att-38811\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_5qTDCTjPy-1stGjrFNQrmw-1024x419.png\" alt=\"\" width=\"750\" height=\"307\" class=\"aligncenter size-large wp-image-38811\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_5qTDCTjPy-1stGjrFNQrmw-1024x419.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_5qTDCTjPy-1stGjrFNQrmw-300x123.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_5qTDCTjPy-1stGjrFNQrmw-768x314.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>4\ub2e8\uacc4 : \uc18c\ube44\uc790\uc5d0\uc11c \ubc84\ud37c\ub97c \uc774\uc6a9\ud55c \uc791\uc5c5\uc744 \ub9c8\uce5c \ud6c4 release()\ub97c \ud638\ucd9c\ud558\uc5ec \ubc84\ud37c\uac00 \ub2e4\uc2dc BufferQueue\ub85c \ub3cc\uc544\uac08 \uc218 \uc788\uac8c \ud55c\ub2e4. \uc774\ub54c \ubc84\ud37c \uc0c1\ud0dc\ub294 ACQUIRED\uc5d0\uc11c FREE\ub85c \ubcc0\uacbd\ub418\uace0 \ubc84\ud37c \uc18c\uc720\uc790\ub294 BufferQueue\uac00 \ub41c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38812\" rel=\"attachment wp-att-38812\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_RY53MOnqbMC4h-QSN6xa9g-1024x329.jpg\" alt=\"\" width=\"750\" height=\"241\" class=\"aligncenter size-large wp-image-38812\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_RY53MOnqbMC4h-QSN6xa9g-1024x329.jpg 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_RY53MOnqbMC4h-QSN6xa9g-300x97.jpg 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_RY53MOnqbMC4h-QSN6xa9g-768x247.jpg 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c BufferQueue\uc758 \uc0c1\ud0dc<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38813\" rel=\"attachment wp-att-38813\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_oijwuAwLjgZefaJHco42kw-1024x378.jpg\" alt=\"\" width=\"750\" height=\"277\" class=\"aligncenter size-large wp-image-38813\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_oijwuAwLjgZefaJHco42kw-1024x378.jpg 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_oijwuAwLjgZefaJHco42kw-300x111.jpg 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_oijwuAwLjgZefaJHco42kw-768x283.jpg 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>WindowManager\uac00 \uc0dd\uc0b0\uc790\uc774\uace0, SurfaceFlinger\uac00 \uc18c\ube44\uc790 \uc778 \uc608\ub97c \uc0b4\ud3b4 \ubcf4\uc790. <br \/>\nDialog\ub97c \ub9cc\ub4e4\uac70\ub098 Activity\ub97c \ub9cc\ub4e4\uba74 Window\ub294 WindowManager\uc5d0 \uc5f0\uacb0\ub41c\ub2e4. \uc774\uc81c Window\uc640 \ub3d9\uc77c \uc120\uc0c1\uc758 \ud615\uc81c\uaca9\uc73c\ub85c SurfaceFlinger \ucabd\uc758 Layer\uac00 \uc874\uc7ac\ud55c\ub2e4. Layer\ub294 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 BufferQueue\ub97c \uc0dd\uc131\ud558\uace0 \uc18c\uc720\ud558\ub294 \ucef4\ud3ec\ub10c\ud2b8\uc774\uba70, Surface\ub294 BufferQueue\uc640 \uc0c1\ud638 \uc791\uc6a9\ud560 \uc0dd\uc0b0\uc790\uc758 \uc5d4\ub4dc\ud3ec\uc778\ud2b8 API\uc774\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38814\" rel=\"attachment wp-att-38814\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_f10BexhwCID5P9LqTL9mXA-1024x602.png\" alt=\"\" width=\"750\" height=\"441\" class=\"aligncenter size-large wp-image-38814\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_f10BexhwCID5P9LqTL9mXA-1024x602.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_f10BexhwCID5P9LqTL9mXA-300x176.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_f10BexhwCID5P9LqTL9mXA-768x451.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_f10BexhwCID5P9LqTL9mXA.png 1946w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<h2>Display Pipeline(\ub514\uc2a4\ud50c\ub808\uc774 \ud30c\uc774\ud504\ub77c\uc778)<\/h2>\n<p>V-Sync \uc2e0\ud638\ub294 \ub514\uc2a4\ud50c\ub808\uc774 \ud30c\uc774\ud504 \ub77c\uc778\uc744 \ub3d9\uae30\ud654 \ud55c\ub2e4. \ub514\uc2a4\ud50c\ub808\uc774 \ud30c\uc774\ud504\ub77c\uc778\uc740 \uc571 \ub80c\ub354\ub9c1\uacfc SurfaceFlinger \ucef4\ud3ec\uc9c0\uc158 \ubc0f \ub514\uc2a4\ud50c\ub808\uc774\uc5d0 \uc774\ubbf8\uc9c0\ub97c \ud45c\uc2dc\ud558\ub294 Hardware Composer (HWC)\ub85c \uad6c\uc131\ub41c\ub2e4. V-Sync \ub294 \uc571\uc758 \ub80c\ub354\ub9c1 \uc2dc\uc791 \uc2dc\uac04, SurfaceFlinger\uc758 \ud654\uba74 \ud569\uc131 \uc2dc\uac04 \ubc0f \ub514\uc2a4\ud50c\ub808\uc774 \ub9ac\ud504\ub808\uc2dc \ub808\uc774\ud2b8\ub97c \ub3d9\uae30\ud654\ud55c\ub2e4. \uc774 \ub3d9\uae30\ud654\ub294 \ubc84\ubc85\uac70\ub9bc\uc744 \uc5c6\uc560\uace0 \uadf8\ub798\ud53d\uc758 \uc2dc\uac01\uc801 \uc131\ub2a5\uc744 \ud5a5\uc0c1\uc2dc\ud0a4\uac8c \ub41c\ub2e4.<\/p>\n<p>\nHWC\ub294 V-Sync \uc774\ubca4\ud2b8\ub97c \uc0dd\uc131\ud558\uace0 \ucf5c\ubc31\uacfc \ud568\uaed8 \uc774\ubca4\ud2b8\ub97c SurfaceFlinger\ub85c \ubcf4\ub0b4\uac8c \ub41c\ub2e4.<\/p>\n<h2>SurfaceView<\/h2>\n<p>SurfaceView\ub294 \ubdf0 \uacc4\uce35 \uad6c\uc870\uc5d0 \ud3ec\ud568\ub41c \uc804\uc6a9 Surface\ub97c \uc81c\uacf5\ud55c\ub2e4. \uc774 Surface\uc758 \ud615\uc2dd\uacfc \uc6d0\ud558\ub294 \uacbd\uc6b0 \ud06c\uae30\ub97c \uc81c\uc5b4 \ud560 \uc218 \uc788\ub2e4. SurfaceView\ub294 \ud654\uba74\uc758 \uc62c\ubc14\ub978 \uc704\uce58\uc5d0 Surface\ub97c \ubc30\uce58\ud558\uac8c \ub41c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38815\" rel=\"attachment wp-att-38815\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_KD6_LMAjugj_tnif79qwrQ-1024x534.png\" alt=\"\" width=\"750\" height=\"391\" class=\"aligncenter size-large wp-image-38815\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_KD6_LMAjugj_tnif79qwrQ-1024x534.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_KD6_LMAjugj_tnif79qwrQ-300x156.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_KD6_LMAjugj_tnif79qwrQ-768x400.png 768w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>SurfaceView\ub294 Window\uac00 Surface \uc778 \uac83\ucc98\ub7fc \ub3d9\uc791\ud55c\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c Surface\uc758 \uad6c\uba4d\uc744 \uc815\ud655\ud558\uac8c \uc790\ub974\uace0, WindowManager\uc640 SurfaceFlinger\uc5d0\uac8c \ub450 \ubc88\uc9f8 Surface\ub97c \ub9cc\ub4e4\ub3c4\ub85d \uc694\uccad\ud55c\ub2e4. \uadf8\ub7f0 \ub4a4 \uccab \ubc88\uc9f8 Surface \uc544\ub798\ub85c \ubc00\uc5b4 \ub123\ub294\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc774 \uc11c\ub85c \ub2e4\ub978 \ub450 \uac1c\uc758 Surface\uc640 BufferQueue\uac00 \uc874\uc7ac\ud558\uac8c \ub41c\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/?attachment_id=38816\" rel=\"attachment wp-att-38816\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_ot-vicN8dvWMX0CUKTugrA-1024x745.png\" alt=\"\" width=\"750\" height=\"546\" class=\"aligncenter size-large wp-image-38816\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_ot-vicN8dvWMX0CUKTugrA-1024x745.png 1024w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_ot-vicN8dvWMX0CUKTugrA-300x218.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_ot-vicN8dvWMX0CUKTugrA-768x559.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2019\/12\/1_ot-vicN8dvWMX0CUKTugrA.png 1716w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\ucc38\uc870:<\/p>\n<p>https:\/\/academy.realm.io\/kr\/posts\/aw205-android-soft-keyboard-tools-namespace-render-thread\/<\/p>\n<p>https:\/\/developer.android.com\/reference\/android\/view\/Choreographer<\/p>\n<p>https:\/\/medium.com\/@workingkills\/understanding-the-renderthread-4dc17bcaf979<\/p>\n<p>https:\/\/medium.com\/better-programming\/android-internals-for-rendering-a-view-430cd394e225<\/p>\n<p>https:\/\/source.android.com\/devices\/graphics\/surfaceflinger-windowmanager<\/p>\n<p>https:\/\/source.android.com\/devices\/graphics\/arch-bq-gralloc<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ub80c\ub354\ub9c1 \ub418\ub294 View\uc758 \ub0b4\ubd80\ub97c \uc0b4\ud3b4\ubcf4\uc790 \ub354 \ub098\uc740 \uc774\ud574\ub97c \uc704\ud574 \uc774\uc804 \ud3ec\uc2a4\ud305\uc778 \uc548\ub4dc\ub85c\uc774\ub4dc View\uac00 \ub80c\ub354\ub9c1 \ub418\ub294 \uacfc\uc815\uc744 \uba3c\uc800 \ucc38\uc870\ud560 \uc218 \uc788\ub2e4. \ub80c\ub354\ub9c1\ud558\ub294 \ub3d9\uc548 \uc0ac\uc6a9\ub418\ub294 \ucef4\ud3ec\ub10c\ud2b8, \ub514\uc2a4\ud50c\ub808\uc774 \ud30c\uc774\ud504 \ub77c\uc778 \ubc0f UI\uc640 \ud558\ub4dc\uc6e8\uc5b4\uac04 \ub3d9\uae30\ud654\uac00 \ubc1c\uc0dd\ud558\ub294 \ubc29\uc2dd \ub4f1 \ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc744 \ud30c\uc545\ud558\uae30 \uc704\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \ub0b4\uc6a9\ub4e4\uc744 \uc54c\uc544\uc57c\ud55c\ub2e4. UI\uc2a4\ub808\ub4dc \ubaa8\ub4e0 \uc571\uc740 UI \uc2a4\ub808\ub4dc\uc5d0\uc11c View\ub97c \uadf8\ub9ac\uac8c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[24],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/38511"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=38511"}],"version-history":[{"count":1,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/38511\/revisions"}],"predecessor-version":[{"id":38817,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/38511\/revisions\/38817"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=38511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=38511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=38511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}