
클래스 계층 구조에서 상속받을 수 있는 클래스의 종류를 제한할 때 사용한다.미리 정의된 여러 상태를 표현할 수 있지만, 각 상태마다 다른 데이터와 동작을 가질 수 있는 클래스컴파일러에서 sealed class의 자식 클래스가 어떤 것이 있는지 알 수 있다.그래서 주로

Coroutine이 실행될 스레드를 지정하는 것I/O 작업에 최적화예: 이미지 다운로드, 파일 입출력, 네트워킹, DB 작업getHelloWorldUseCase가 네트워크 요청을 수행하면,이를 최적화된 스레드에서 실행함UI 스레드가 차단되지 않고 네트워크 요청이 빠르게

앱 버전을 보면 1.0.0 이런 식으로 관리가 되는데, 이는 시맨틱 버저닝이라는 버전 표기 방식을 사용한 것이다.각 자리마다 버전을 나누는 기준이 모호할 수 있는데, 이 부분은 정책적인 거기도 하고 이렇게 표기하기로 약속하자~하는 거라서 그냥 서로가 납득할 수 있게만

무한스크롤을 구현하던 중, 스크롤이 가장 아래에 도달했을 때 다음 내용을 API에 요청하는 작업에서 이슈가 발생했었다.스크롤을 내리다가 맨 아래에 도달한 시점에 API를 딱 한 번만 호출을 해야하는데, 4~5번씩 호출하고 있었던 것이다. 이러면 서버에도 무리가 가고,

Android 앱 개발을 하면서 사용자 로그인 처리를 해주려면 Token 관리가 필수적이다.보통 로그인 API를 통해 Access Token, Refresh Token을 Response 값으로 받게 되고, 이 데이터를 로컬 데이터베이스에 저장해둔다. 그리고 이후 다른

onDestroy란? 공식 문서를 참고해서 설명하자면, onDestroy()는 안드로이드 수명 주기에서 활동이 소멸되기 전에 호출되는 콜백이다. 즉, 활동을 종료하는 마지막 수명 주기 콜백인 것이다. unbind 이때, onDestroy 메서드에서 unbind를 해주어

**Builder 패턴의 정의** 복잡한 객체의 생성에 사용되는 `생성 패턴(Creation Patterns)` 중 하나로, 객체 생성을 단순화하고 명확하게 표현하는 데 매우 유용한 디자인 패턴이다. 특히 매개변수나 선택적 매개변수가 많은 객체를 생성할 때 코드의 가독