목록전체 글 (150)
시배's Android
CollapsingToolbarLayout CollapsingToolbarLayout은 스크롤 동작에 따라 다양한 효과를 적용할 수 있습니다. 예를 들어 스크롤을 아래로 내릴 때 툴바가 축소되면 화면 상단에 고정되고 이미지가 페이드아웃되는 효과 등을 설정할 수 있습니다. 위 Gif처럼 Compose에서 구현을 하려면 TopAppBarDefaults에 정의되어 있는 ScrollBehavior와 LargeTopAppBar를 통해 구현할 수 있습니다. @OptIn(ExperimentalMaterial3Api::class) @Composable fun Test() { val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() Scaffol..
Recomposition Compose의 recomposition은 UI를 업데이트하기 위해 필요한 변경 작업을 식별하고 수행하는 과정을 의미합니다. Recomposition은 선언적인 방식으로 작성된 Composable 함수들이 동작하는 핵심 메커니즘 중 하나입니다. Compose에서는 UI를 구성하는 각각의 Composable 함수는 독립적인 단위로 작동합니다. Composable 함수는 입력된 상태(State)에 따라 UI를 그리고 업데이트하는 역할을 담당합니다. Composable 함수는 상태가 변경될 때마다 자동으로 호출되고, 변경된 부분만 다시 그리고 업데이트합니다. Recomposition은 Composable 함수가 동일한 입력에 대해 동일한 출력을 생성하는지 확인하기 위해 수행됩니다. C..
Repository With Suspend Functions 일시 중단 함수를 만들려면 시그니처에 suspend 제어자만 추가하면 된다. 코루틴 외부에서 이 함수를 호출하면 동작하지 않는다. interface ProfileServiceRepository { suspend fun fetchByName(name : String) : Profile suspend fun fetchById(id : Long) : Profile } class ProfileServiceClient : ProfileServiceRepository { override suspend fun fetchByName(name : String) : Profile { return Profile(1, name, 28) } override suspe..
비동기 함수 결과가 없는 비동기 함수 : 완료 여부를 모니터링할 수 있지만 결과를 갖지 않는 백그라운드 작업이 이런 유형에 속한다. 결과를 반환하는 비동기 함수 : 비동기 함수가 웹 서비스에서 정보를 가져올 때 거의 대부분 해당 함수를 사용해 정보를 반환하고자 할 것이다. 잡의 라이프 사이클 New : 존재하지만 아직 실행되지 않는 잡 잡은 기본적으로 launch()나 Job()을 사용해 생성될 때 자동으로 시작된다. 잡을 생성할 때 자동으로 시작되지 않게 하려면 CoroutineStart.LAZY를 사용해야 한다. Activie : 실행 중인 잡. 일시 중단된 잡도 활성으로 간주된다. start() : 잡이 완료될 때까지 기다리지 않고 잡을 시작한다. 일시 중단 함수나 코루틴에서 호출할 필요가 없다. ..
안드로이드의 UI 스레드 안드로이드는 뷰 계층을 생성하지 않은 스레드가 관련 뷰를 업데이트하려고 할 때마다 CalledFromWrongThreadException을 발생시킨다. 자바에서의 네트워크 동작은 기본적으로 블로킹된다. NetworkOnMainThreadException 발생 백그라운드에서 요청하고, UI 스레드에서 업데이트할 것 스레드 생성 CoroutineDispatcher 기본적으로 가용성, 부하, 설정을 기반으로 스레드 간에 코루틴을 분산하는 오케스트레이터다. asyn()는 Deferred를 반환하는데, 디퍼트 코루틴 프레임워크에서 제공하는 취소 불가능한 넌블로킹 퓨처를 의미한다. asyn() 블록 안에서 발생하는 예외는 그 결과에 첨부되는데, isCancelled와 getCancellat..
프로세스 프로세스는 실행 중인 애플리케이션의 인스턴스다. 애플리케이션이 시작될 때마다 애플리케이션의 프로세스가 시작된다. 프로세스는 상태를 갖고 있다. 리소스를 여는 핸들, 프로세스 ID, 데이터, 네트워크 연결 등은 프로세스 상태의 일부이며 해당 프로세스 내부의 스레드가 액세스를 할 수 있다. 스레드 실행 스레드는 프로세스가 실행할 일련의 명령을 포함한다. 프로세스는 최소한 하나의 스레드를 포함하며 이 스레드는 애플리케이션의 진입점을 실행하기 위해 생성된다. 보통 진입점은 애플리케이션의 main() 함수이며 메인 스레드라 하는데 프로세스의 라이프 사이클과 연관된다. 각 스레드는 스레드가 속한 프로세스에 포함된 리소스를 액세스하고 수정할 수 있지만 스레드 로컬 스토리지 라는 자체 저장소도 갖고 있다. 애..