기본 콘텐츠로 건너뛰기

안드로이드 앱 만들기 : Compose August ’23 release 읽어보기 (인터넷 펌)


원본출처: 티스토리 바로가기

https://android-developers.googleblog.com/2023/08/whats-new-in-jetpack-compose-august-23-release.html

 

What’s new in the Jetpack Compose August ’23 release

News and insights on the Android platform, developer tools, and events.

android-developers.googleblog.com

이 글은 위 링크에서 퍼온 글입니다.  앱 개발에서 차지하는 비용(?) 중에서 UI 구성은 많은 부분을 할애하도록 합니다. xml layout 을 이용해서 작업을 할 때보다는 compose을 활용하는 것이  효율성이나, 재활용성에 있어서는 많은 도움이 되고 있음을 느끼고 있는 중입니다. 

 

이 시점에 새로운 릴리즈가 나왔다고 하네요... 한번 읽어 보도록 하겠습니다.  아래 글은 원본 페이지의 번역본임을 밝혀 둡니다. 

 


성능

2021년에 Compose 1.0을 처음 출시했을 때 우리는 구축할 수 있는 견고한 기반을 제공하기 위해 API 표면을 올바르게 만드는 데 집중했습니다. 우리는 개발자가 프로덕션에서 안심하고 사용할 수 있도록 사용하기 쉽고 안정적인 강력하고 표현력이 풍부한 API를 원했습니다. API를 지속적으로 개선함에 따라 성능이 최우선 순위이며 2023년 8월 릴리스에서는 많은 성능 개선 사항을 달성했습니다.

수정자 성능

수정자는 이 릴리스에서 컴포지션 시간이 최대 80% 향상되어 성능이 크게 향상되었습니다 . 가장 좋은 점은 첫 번째 릴리스에서 API 표면을 올바르게 가져오는 작업 덕분에 대부분의 앱이 2023년 8월 릴리스로 업그레이드하는 것만으로 이러한 이점을 볼 수 있다는 것입니다.

회귀를 모니터링하고 성능 개선에 대한 투자 정보를 제공하는 데 사용되는 일련의 벤치마크가 있습니다. Compose의 초기 1.0 릴리스 이후 우리는 개선할 수 있는 부분에 집중하기 시작했습니다. 벤치마크는 수정자를 구체화하는 데 예상했던 것보다 더 많은 시간을 소비하고 있음을 보여주었습니다. 수정자는 컴포지션 트리의 대부분을 구성하므로 Compose의 초기 컴포지션 시간에 가장 큰 기여를 했습니다. 보다 효율적인 설계를 위한 수정자 리팩터링은 2022년 10월 릴리스에서 내부적으로 시작되었습니다.

2022년 10월 릴리스에는 가장 낮은 수준의 모듈인 Compose UI에 새로운 API 및 성능 개선 사항이 포함되었습니다.수정자는 서로 위에 구축되므로 다음 릴리스인 2023년 3월부터Compose Foundation에서 하위 수준 수정자를 마이그레이션 하기 시작했습니다.여기에는 graphicsLayer , 저수준 포커스 수정자, 패딩  오프셋이 포함됩니다 . 이러한 저수준 수정자는 Clickable과 같이 활용도가 높은 다른 수정자에서 사용되며 Text 와 같은 많은 프레임워크 컴포저블에서도 활용됩니다.. 2023년 3월 릴리스에서 수정자를 마이그레이션 하면 해당 구성요소의 성능이 향상되었지만 더 높은 수준의 수정자와 컴포저블 자체를 새로운 수정자 시스템으로 마이그레이션 할 수 있을 때 실질적인 이점이 있을 것입니다.

2023년 8월 릴리스에서 클릭 가능한 수정 자를 새로운 수정자 시스템으로 마이그레이션하기 시작하여 구성 시간을 크게 개선했으며 경우에 따라 최대 80%까지 향상되었습니다 . 이는 버튼과 같은 클릭 가능한 요소를 포함하는 지연 목록과 특히 관련이 있습니다. Clickable 에서 사용하는 Modifier.indication 은 아직 마이그레이션 과정에 있으므로 향후 릴리스에서 더 많은 이점을 얻을 수 있을 것으로 예상합니다.

이 작업의 일부로 원래 리팩터링에서 다루지 않은 구성된 수정자의 사용 사례를 식별하고 CompositionLocal 인스턴스를 사용하는 Modifier.Node 요소를 만들기 위한 새 API를 추가했습니다 .

현재 자체 수정자를 새 Modifier.Node API로 마이그레이션 하는 과정을 안내하는 문서 작업을 진행 중입니다. 바로 시작하려면 저장소에서 샘플을 참조할 수 있습니다.

Android Dev Summit '22의 Compose Modifiers 심층 분석 에서 변경 사항의 근거에 대해 자세히 알아보세요.

메모리

이 릴리스에는 메모리 사용에 대한 여러 가지 개선 사항이 포함되어 있습니다. 서로 다른 Compose API에서 발생하는 할당을 면밀히 살펴보고 여러 영역, 특히 그래픽 스택 및 벡터 리소스 로딩에서 총할당을 줄였습니다. 이렇게 하면 Compose의 메모리 공간이 줄어들 뿐만 아니라 메모리 할당에 소요되는 시간이 줄어들고 가비지 수집이 줄어들기 때문에 성능이 직접적으로 향상됩니다.

또한 ComposeView 사용 시 메모리 누수를 수정하여 모든 앱에 도움이 되지만 특히 다중 활동 아키텍처 또는 많은 양의 View/Compose 상호 운용성을 사용하는 앱에 유용합니다.

텍스트

BasicText는 수정자 작업으로 지원되는 새로운 렌더링 시스템으로 이동하여 초기 구성 시간에 평균 22%의 이득을 가져왔고 텍스트와 관련된 복잡한 레이아웃의 한 벤치마크에서 최대 70%의 이득을 가져왔습니다.

다음을 포함하여 여러 Text API도 안정화되었습니다.

핵심 기능 개선 및 수정

또한 핵심 API의 새로운 기능과 개선 사항을 제공하고 일부 API를 안정화했습니다.

  • LazyStaggeredGrid 가 이제 안정되었습니다.
  • 반환된 객체가 원래 android.graphics.Paint를 래핑 하므로toComposePaint 를 대체하는 asComposePaint API가 추가되었습니다.
  • SubcomposeLayout에서 미리 보기를 지원하기 위해 IntermediateMeasurePolicy를 추가했습니다 .
  • 소프트 키보드 전에 키 이벤트를 가로채기 위해 onInterceptKeyBeforeSoftKeyboard 수정자를 추가했습니다.

이상으로 새로운 이야기를 읽어 보았습니다.  오늘 하루 마무리도 즐거운 시간이 되시길 기원합니다.

 

참고이미지

 

쿠팡링크 쿠팡와우 로켓프래쉬 로켓패션
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글

이 블로그의 인기 게시물

개인정보처리방침 안내

 billcoreaTech('https://billcoreatech.blogspot.com/'이하 'https://billcoreatech.blogspot')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2021년 8월 26부터 적용됩니다. 제1조(개인정보의 처리 목적) billcoreaTech('https://billcoreatech.blogspot.com/'이하 'https://billcoreatech.blogspot')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. 1. 서비스 제공 맞춤서비스 제공을 목적으로 개인정보를 처리합니다. 제2조(개인정보의 처리 및 보유 기간) ① billcoreaTech은(는) 법령에 따른 개인정보 보유·이용기간 또는 정보주체로부터 개인정보를 수집 시에 동의받은 개인정보 보유·이용기간 내에서 개인정보를 처리·보유합니다. ② 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다. 1.<서비스 제공> <서비스 제공>와 관련한 개인정보는 수집.이용에 관한 동의일로부터<사용자의 설정시간>까지 위 이용목적을 위하여 보유.이용됩니다. 보유근거 : 앱의 기본기능 활용에 필요한 위치정보 제3조(개인정보의 제3자 제공) ① billcoreaTech은(는) 개인정보를 제1조(개인정보의 처리 목적)에서 명시한 범위 내에서만 처리하며, 정보주체의 동의, 법률의 특별한 규정 등 「개인정보 보호법」 제17조 및 제18조에 해당하는 경우에만 개인정보를 제3자에게 제공합니다. ② billcoreaTech

안드로이드 앱 만들기 : jetpack compose URL 에서 image 받아와서 보여 주기 (feat coil)

원본출처: 티스토리 바로가기 샘플 이미지 오늘은 앱을 만들면서 이미지를 보여 주어야 하는 경우 중에  URL에서 이미지를 가져와 보는 것에 대해서 기술해 보겠습니다.  URL에서 image를 가져온다는 것은 서버에 저장된 image 일수도 있고, SNS profile의 image 정보일수도 있을 것입니다.    구글에서 찾아보면 다른 것들도 많이 있기는 합니다.  그 중에서 coil 라이브러리를 이용해서 한번 만들어 보도록 하겠습니다.    gradle 설정 그래들 설정은 아래 한 줄입니다. 현재 시점에서 최신 버전인 것으로 보입니다.  이 글을 보시는 시점에 최신 버전이 아니라면 아마도 android studio는 추천을 해 줍니다. // image load from url implementation("io.coil-kt:coil-compose:2.2.2")   manaifest  설정 당연한 이야기 겠지만, url에서 이미지를 받아 와야 하기 때문에 권한 설정을 해야 합니다. 또한 인터넷에서 자료를 받아 오는 것은 지연이 발생할 수 있기 때문에 application에서도 다음 문구의 추가가 필요합니다.  <uses-permission android:name="android.permission.INTERNET" /> <application ... android:networkSecurityConfig="@xml/network_config" ... /> 이 설정을 하게 되면 xml 파일을 하나 추가해 주면 됩니다.  network_config.xml 이라는 이름으로 말입니다.  <?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextT