전체 글 썸네일형 리스트형 [Library] Retrofit이 뭔데? Retrofit?- Retrofit?Retrofit란 Square사의 HTTP 클라이언트 라이브러리인 OkHttp를 기반으로 하는 안드로이드 앱 및 Java 기반의 웹 서비스에서 네트워크 통신을 처리하기 위한 라이브러리이다. Retrofit은 RESTful 웹 서비스와의 통신을 간편하게 만들어준다. Retrofit을 통해 API를 호출하고 서버와 통신하려면 일반적으로 Retrofit을 통해 주고받는 데이터를 직렬화/역직렬화하고 이를 다시 원하는 객체로 변환하기 위한 Converter가 필요하다. 이를 위해 Retrofit은 Gson, Moshi 등 직렬화 라이브러리들과 함께 사용한다. 이 글에서는 대표적인 직렬화 라이브러리 중 Moshi와 함께 간단한 로그인 기능을 구현해보고자 한다. 먼저 Retrofi.. 더보기 [Asynchronous] suspend 넌 코루틴이 아니야 suspend fun 이란??- suspend funsuspned fun은 일시 중단이 가능한 함수로 함수 내에 일시 중단 지점을 포함할 수 있는 함수이다. 코루틴에서 실행되는 일시 중단 지점이 포함된 코드를 재사용할 수 있는 코드의 집합으로 만드는 역할을 한다. 이해하기 쉽게 아래의 코드로 설명해 보겠다.fun main() = runBlocking { delay(100L) println("Hello World") delay(100L) println("Hello World")} 위의 코드는 delay 함수와 println 함수가 반복된다. 반복되는 코드를 줄이기 위해 이를 함수로 만들자면 아래와 같이 만들 수 있다.fun printHelloWorldDelay() { delay(.. 더보기 [Kakao Map] Jetpack Compose를 사용해서 Kakao Maps 적용하기 Jetpack Compose를 사용한 UI 코드를 기반으로 Kakao Maps를 적용하고 싶었으나 마땅한 자료가 없어 내가 직접 작성해 보겠다.참고로 필자의 프로젝트의 구조는 SAA / Convention Plugin / Version Catalog를 사용하여 구성됐다. 일단 먼저 Kakao Maps 공식 문서에 들어가서 SDK를 설치해야 할 것이다. 이 글이 작성된 날을 기준으로 한 공식문서에 의하면 SDK는 아래의 요구사항을 공지하고 있다.안드로이드 플랫폼 버전 6.0(API level 23) 이상 지원armeabi-v7a, arm64-v8a 아키텍쳐 지원OpenGL ES 2.0 이상 지원인터넷 권한 필요 (Manifest에서 INTERNET을 열어주는 것) 이제부터 세팅부터 구현까지 차근차근 설명해.. 더보기 [XML] ConstraintLayout.. LinearLayout.. 각종 Layout을 알아보자! Layout- Layout??Layout은 ViewGroup의 일종으로 다른 뷰들을 내부에 배치하는 역할을 수행한다. Layout은 내부에 위젯이나 다른 Layout을 내부에 배치함으로써 다양한 화면을 구성한다. 일반적으로 Layout은 화면 상에 직접 보이지 않는다. Layout 파일은 애플리케이션의 Layout 구조를 설명하며, View 및 ViewGroup 요소를 구성하고 배치하는데 사용된다. Layout 파일은 리소스 디렉터리(res/layout)에 저장되며, 애플리케이션 코드에서 인플레이트(inflate)하여 실제 UI를 생성한다. UI를 구성할 수 있는 Layout에는 여러가지 종류가 있는데 한번 차근차근 알아보자 - ConstraintLayoutConstraintLayout은 필자가 가장 .. 더보기 Generic활용하여 DataSource중복로직 줄이기 - 배경DataSource를 Flow와 APIHandler클래스를 만들어 구현했는데 이때 emit 하는 과정에서 중복되는 코드가 생겨 이를 Generic을 활용하여 해결하고자 했다. 이를 중복코드를 해결하기 위해Generic, inline, reified, crossinline등 코틀린에서 지원하는 문법들을 활용하여 중복코드를 줄일 수 있는 함수를 제작하기로 하였다. 아래는 함수를 적용하지 않은 DataSource의 코드이다.class LectureDataSourceImpl @Inject constructor( private val lectureAPI: LectureAPI,) : LectureDataSource { override fun openLecture(body: OpenLectureR.. 더보기 [UI] DataBinding..? ViewBinding...? DataBinding, ViewBinding전에! Binding이란??- BindingBinding이란 Android 개발 시 Activity나 Fragment에서 Layout내의 View들을 참조하기 위한 변수들을 연결해 주는 행위라고 얘기할 수 있다. 이런 역할을 해주는 Binding class들을 가지고 귀찮은 과정 없이 View들을 바로 참조할 수도 있는 거고, View들에 데이터를 바로 넣어줄 수도 있는 거다.DataBinding?- BindingDataBinding이란 XML에서 직접 View에 데이터를 할당하기 위해 사용하는 Android Jetpack 라이브러리 중 하나이다. DataBinding을 사용하지 않으면 findViewById와 같은 메서드를 사용해서 실시간으로 모든 리소스 트리.. 더보기 [UI] Compose SideEffect? Compose에서의 SideEffect- SideEffect?SideEffect란 Composable 범위 밖에서 발생하는 앱 상태에 대한 변경을 의미한다. 보통 Compose를 사용하게 된다면 여러 Composable을 겹쳐서 사용을 하게 되는데, 이로 인해 안드로이드 내부에서 각 Composable에 대한 LifeCycle을 만들게 된다. 또한 Composable은 단방향으로 바깥쪽에서 안쪽으로 상태를 내려주게 된다. 하지만 이때 만약 안쪽에 있는 Composable이 바깥쪽에 있는 Composable의 상태에 대한 변경을 주거나 Composable에서 Composable이 아닌 앱 상태에 대해 변화를 준다면 SideEffect가 발생한다. 위 두 경우를 간단히 예제코드와 함께 짚어보고 넘어가겠다.. 더보기 [Kotlin] Generic! 넌 뭐냐? 평소에 안드로이드 개발 시에 제네릭을 사용하여 Event라는 클래스를 만들어 서버와의 API 요청 시에 다양한 상태를 타입 안정성을 유지하면서 통신 상태를 표현하고자 제네릭을 사용하기도 했고 동일한 로직을 줄이고자 제네릭 함수로 만들어서 사용해 봤지만 제대로 아는 거 같지 않아 이렇게 정리한다.Generic- 제네릭(Generic)?제네릭(Generic)이란 프로그래밍 언어들에서 제공해주는 기능 중 하나인데 제네릭은 클래스나 인터페이스 혹은 함수 등에서 동일한 코드로 여러 타입을 지원해 주기 위해 존재하는 기능이다. 코틀린에서는 코드에 타입 안정성을 주기 위해 많은 노력을 하고 있는데 코틀린을 사용해 개발 시에 위에서 말한 제네릭을 사용한다면 타입의 안정성을 높여 코드를 작성할 수 있게 도와줄뿐더러 타입.. 더보기 이전 1 2 다음