안찌의 개발일기

코루틴은 아주 중요한 개념입니다.Android에서 비동기 작업할 때 사용하기에 몰라서는 안되는 친구입니다!!아직은 우리 코루틴과 친하지 않은 것 같아 친해지기 위하여 열심히 알아봤습니다...! 😇 코루틴Co(함께, 서로) + routine(규칙적인 일의 순서, 작업의 집합) 2개가 합쳐진 단어로 함께 동작하며 규칙이 있는 일의 순서를 뜻합니다. 다른 말로 하면 실행의 지연과 재개를 허용함으로써, 비선점적 멀티태스킹을 위한 서브루틴을 일반화한 컴퓨터 프로그래밍 구성요소입니다.보통 루틴은 일직선적인 흐름을 가지는데, 코루틴은 이 흐름을 중간에 suspend(지연) 했다가 resume(재시작)을 하는 것이 가능합니다. 코틀린에서는 suspend 라는 접두어를 붙이면 코루틴 즉, 중간에 멈출 수 있는 함수가 ..
Compose의 생명주기 컴포저블 수명 주기  |  Jetpack Compose  |  Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 컴포저블 수명 주기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 페이지에서는 컴포저블의 수명developer.android.com Jetpack Compose는 위 공식 문서에서 설명된 것처럼 특정한 생명주기를 따르고 있습니다.생명주기는 위 그림과 같이 세 단계로 구성됩니다. Enter the Composition : 컴포저블이 처음 실행되어 UI를 구성합니다.Recomposition : State 객체의 변경으로 인해 필요한 부분만 재 구성됩니다.Leave the Compo..
프로젝트를 진행하던 중 리컴포지션 최적화 단계에서 겪었던 트러블 슈팅에 대해 작성하고자 합니다! 💥 상태를 by remember를 통해 호이스팅하여 관리했을 때 리컴포지션 문제 발생문제 정의 compose-samples/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/cart/Cart.kt at main · android/compose-samplesOfficial Jetpack Compose samples. Contribute to android/compose-samples development by creating an account on GitHub.github.com Compose-samples를 보며 얻은 인사이트 중 하나는 상태 호이스팅을 통..
Android XML에서는 오른쪽 Preview에서 내가 만든 UI를 빌드하지 않고 바로 확인하여 개발할 수 있습니다.JetPack Compose에서는 Preview 컴포저블을 만들어 내가 만든 컴포저블들을 확인하여 개발할 수 있습니다. Android View Sytsem 에서는 Activity 혹은 Fragment에서 viewmodel의 인스턴스를 생성하지만, JetPack Compose에서는 아래와 같이 컴포저블 파라미터에서 viewModel() 함수를 호출하여 생성합니다.   하지만 여기서 중요한 점은! MyScreen 컴포저블은 뷰모델 인스턴스 생성으로 인해 Preview가 작동하지 않기 시작합니다. 물론 직접 앱을 빌드하여 확인하면 되겠지만,,, UI 하나 수정할 때 마다 빌드해서 확인해야하는 ..
서버와 통신하는 방법은 여러 종류가 있습니다.그 중 크게 HTTP 기반 통신과 소켓 통신으로 나눌 수 있습니다.우선 각 각이 무엇인지 무엇인지 알아보겠습니다. 소켓 통신소켓 통신은 네트워크 프로그래밍의 핵심 요소로, 프로세스가 네트워크를 통해 데이터를 송수신할 수 있는 창구 역할을 합니다.소켓은 네트워크 상에서 두 호스트 간의 통신을 가능하게 하며, 다양한 프로토콜과 함께 사용됩니다. 개념소켓은 네트워크 상에서 데이터를 주고받기 위한 엔드포인트입니다.소켓은 IP 주소와 포트 번호를 결합하여 네트워크 상의 특정 위치를 지정하며, 이를 통해 두 프로세스 간의 통신이 이뤄집니다. 소켓 동신은 클라이언트 - 서버 모델을 기반으로 하며, 클라이언트는 서버에 연결을 요청하고, 서버는 이 요청을 수락하여 데이터 통신..
프로그램과 프로세스프로그램과 프로세스… 두 개의 차이점은 무엇일까요?또 프로세스와 프로세서는 무엇이 다를까요??이 어려운 3개의 용어.. 같지만 다른 느낌! 프로그램(.exe 파일)저장장치에 저장되어 있는 정적인 상태 프로세스 → 로딩이 끝난 상태실행을 위해 메모리에 올라온 동적인 상태프로세스는 소프트웨어를 뜻하며 넓은 의미에서의 프로그램입니다.프로세서는 하드웨어를 뜻하며 CPU, GPU 등을 뜻합니다. 위에서 말한 로딩이 무엇일까요?우선 프로그램이 실행되는 과정을 간단하게 알아봅시다! C++ 파일을 컴파일러로 번역하면 여러개의 object 파일이 생성됩니다.이 object 파일을 묶어 실행가능한 exe 파일을 만드는데 이 과정을 수행하는 친구가 링커 (Linker) 입니다. 이 실행파일은 HDD, SD..
그놈의 동기.... 비동기.... (대학 동기는 많은뎀) 안드로이드에서 비동기 개념은 매우 중요합니다.안드로이드에서 비동기 처리를 위해서는 여러 방법이 있습니다. 예를 들어 rxJava, rxKotlin, Coroutine 등을 사용하는 방법이 있습니다. 이번 포스터에서는 코루틴의 개념에 대해서 다루도록 하겠습니다.Coroutine의 개념🤚🏻 가볍게 다시 짚어보기동기 : 어떤 요청을 보낸 뒤, 그 요청의 결과값을 얻기까지 작업을 멈추는 것비동기 : 어떤 요청을 보낸 뒤, 그 요청의 결과값이 오기까지 멈추지 않고 또 다른 일을 수행하는 것 Android에서는 AsyncTask를 사용하여 손쉬운 비동기 프로그래밍을 구현했었습니다.하지만 이는 메모리 누수 등의 여러가지 문제로 인하여 API 30 이후부터는..
RecyclerView가 뭐길래? Android Developers가 정의하는 RecyclerView는 위와 같다. 즉, 대량의 데이터 세트를 동적으로 생성하여 재사용한다는 것이다. ListView는 notifyDataSetChanged()만 지원한다.즉, 데이터가 하나라도 변경되면 무조건 새로 layout을 inflate하는 것이다. ❓이것이 얼마나 비효율적인것이길래?ListView는 스크롤할 때마다 새로운 항목을 로드할 때 layout inflate를 실행한다.layout inflate는 주로 메인 스레드에서 실행될 뿐만아니라 비동기로 처리되지 않는다. 즉, layout inflate가 실행되면 즉시 layout을 inflate하고, 호출자에게 결과인 뷰를 반환한다.이 과정에서 해당 스레드가 블록되어..
안 찌
'안찌의 개발일기' 카테고리의 글 목록