Coroutine에 대해서 알아보자. Coroutine이란? Co(함께, 동시에) + routine(작업들의 집합) Coroutine은 비동적인 작업을 효율적으로 처리하기 위한 기술입니다. 코루틴은 스레드와 마찬가지로 동시성을 다루지만, 스레드와는 달리 코루틴은 하나의 스레드에서 여러 개의 작업을 처리할 수 있습니다. 코루틴은 일반적으로 suspend 함수를 사용하여 구현됩니다. suspend 함수는 실행 중지가 가능한 함수로, 실행이 중지된 후 다시 실행될 수 있습니다. 이를 통해 코루틴은 비동기 작업을 중단하고 다른 작업을 수행한 후 다시 이어서 작업을 진행할 수 있습니다. 코루틴은 비동기 작업을 간결하고 가독성 높은 코드로 작성할 수 있게 해주며, 코루틴 컨텐스트를 이용하여 작업의 스케줄링과 취소를..
java.lang.IllegalArgumentException: baseUrl must end in /: 라는 오류가 발생했다. 알아보니 retrofit 으로 base url 사용시 나타난 에러이다. 알아보니 공통 클래스를 하나 생성해서 base url 을 지정하고 retrofit 을 통해서 사용했는데 위와같은 에러가 나타났다. base url 의 끝 부분은 반드시 / 로 끝나야 한다고 한다.
갑자기 이런 화면이 떴다. 무엇이 문제일까.... 찾아보니 Gradle 파일에서 android { ... buildFeatures { viewBinding = true } } 이와같이 viewBinding을 하였을 경우 plugins { id "kotlin-android-extensions" } 를 아래와 같이 고쳤더니 해결이 되었다. plugins { id 'kotlin-parcelize' } kotlin plugin extension이 deprecated 됐다. 그래서 다른 방법으로 처리를 해야한다. 안드로이드 개발자 사이트에 의하면 viewBinding을 통해 마이그레이션을 하라고 하고 있다.
이전에 클린아키텍처가 무엇인지에 대해서 글을 썻다. 오늘은 클린아키텍처를 안드로이드에서 실습해보자. 사이드 프로젝트 형식으로 해보았다. 1. 맨 처음에 Android Project 형식을 App -> Project로 바꾼 이후에 Project를 우 클릭하면 다음과 같은 화면이 나온다. 2. 이후 Module을 클릭하면 이와같은 Create New Module이 나온다. 그러면 2번째에 있는 Android Library를 클릭하여 사용자가 생성하고 싶은 이름으로 새로운 모듈을 생성하자. (ex. Data. Domain. Presentaion) 3. 위와 같은 방법으로 실행하였다면 아래와 같이 셋팅이 되어있을 것이다. 그렇다면 Gradle 파일로 가서 의존성을 넣어주자. Data 모듈의 Gradle 파일에는..
Intent 란? 인텐트는 컴포넌트(액티비티, 서비스, 브로드캐스트 리시버)간에 통신을 하기 위한 메시지 객체 이다. 즉, 쉽게 말하자면 Component를 실행시키기 위해 시스템에 넘기는 정보이다. Intent를 사용하는 방법은 여러가지가 있지만 일반적으로 3가지이다. 액티비티의 시작: startActivity(Intent), startActivityForResult(Intent, requestCode) 서비스의 시작: startService(Intent), bindService(Intent) 브로드케스트 전달: sendBroadcast(Intent), sendOrderedBroadcast(Intent), sendStickyBroadcast() 또한 인텐트의 유형으로는 명시적 인텐트(Explicit I..
오늘은 안드로이드의 Context에 대해서 공부해보자. Context란? 애플리케이션(객체)의 현재 상태의 맥락(context)를 의미한다. Context 는 크게 두 가지 역할을 수행하는 Abstract 클래스 입니다. 어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근하기 안드로이드 시스템 서비스에서 제공하는 API를 호출 할 수 있는 기능 컨텍스트는 새로 생성된 객체가 지금 어떤일이 일어나고 있는지 알 수 있도록 한다. 따라서 액티비티와 애플리케이션에 대한 정보를 얻기 위해서는 컨텐스트를 사용한다. 또한 컨텍스트는 시스템의 핸들러와도 같다. 리소스, 데이터베이스, preferences 등에 대한 접근을 제공한다. 안드로이드 앱에서는 Activity가 존재하는데, 액티비티는 애플리케이션이 현재 ..
오늘은 클린 아키텍처에 대해서 공부해보자. 특정 수준 혹은 복잡도를 가진 애플리케이션을 위한 고품질 코드를 작성하기 위해서는 상당한 노력과 경험이 필요하다. 이에 기존의 계층형 아키텍처가 가지던 의존성에서 벗어나게 하는 설계를 제공하도록 하는 것이 Clean Architecture(클린 아키텍처)이다. 클린 아키텍처는 Robert C. Martin이 작성한 블로그 글에서 정립한 용어로, 클린코드 그리고 클린아키텍처라는 책이 존재한다. (나중에 읽어보자) 클린아키텍처는 외부 인터페이스에서 독립적으로 구현할 수 있도록 하게 하며, 계층형 아키텍처와는 달리 클린 아키텍처의 의존성은 항상 원 안쪽을 향한다. 즉, 바깥쪽 원에 해당하는 어떠한 것들도 안쪽 원에는 영향을 주지 않는다. (위 그림 참조) 이 아키텍처..