Developing Myself Everyday
[1] MVVM Repository에 Room과 Hilt 사용하기
Android/Kotlin 2023. 6. 19. 11:07

Room 이란? 데이터베이스에 데이터를 가져오려면 기본적으로 우리는 서버를 거치고 REST API를 사용해야 한다. 이렇게 되면 데이터베이스에 접근이 불편하고 번거롭다. 그리고 컴파일 타임에서 오류를 검출할 수 없게 된다. Room은 이런 번거로움을 한번에 해결해준다. Room은 안드로이드 영구 저장소 솔루션 중 하나로, SQLite 데이터베이스 위에 구축된 ORM(Object-Relational Mapping) 라이브러리이다. Room은 데이터베이스 작업을 쉽게 수행할 수 있도록 추상화된 인터페이스를 제공하며, 데이터베이스 스키마를 객체로 표현하여 개발자가 직접 SQL 쿼리를 작성하는 번거로움을 줄여준다. Room의 주요 구성 요소는 다음과 같다: Entity(엔티티): 데이터베이스 테이블과 매핑되는 ..

article thumbnail
[Android] Fragment Life Cycle (프래그먼트 생명주기)
Android 2023. 6. 13. 17:04

프래그먼트는 항상 액티비티 내에서 호스팅되어야 하며 해당 프래그먼트의 수명 주기는 호스트 액티비티의 수명 주기에 직접적으로 영향을 받는다. 예를 들어 액티비티가 일시정지되는 경우, 그 안의 모든 프래그먼트도 일시정지되며 액티비티가 소멸되면 모든 프래그먼트도 마찬가지로 소멸된다. 그러나 액티비티가 실행 중인 동안에는 각 프래그먼트를 추가 또는 제거하는 등 개별적으로 조작할 수 있다. ✔ 프래그먼트 생명주기 기본적으로 프래그먼트는 액티비티에 안에서 호스팅된다. 그래서 프래그먼트의 수명 주기를 관리하는 것은 액티비티의 수명 주기를 관리하는 것과 매우 비슷하다. 💬 액티비티 수명 주기와의 조화 프래그먼트가 있는 액티비티의 수명 주기는 해당 프래그먼트의 수명 주기에 직접적인 영향을 미친다. 따라서 액티비티에 대한..

article thumbnail
[Android] Activity Life Cycle (액티비티 생명주기)
Android 2023. 6. 13. 16:48

안드로이드 앱을 개발하면서 모든 수명 주기 메서드를 구현할 필요는 없다. 하지만 각각의 수명 주기 메서드를 이해하고, 사용자가 예상한 대로 앱이 동작하도록 필요한 수명 주기 메서드를 구현하는 것이 중요하다. ✔ 액티비티 생명주기 ⬜ onCreate() onCreate()는 시스템이 활동을 생성할 때 가장 먼저 실행되는 것으로, 액티비티에서는 필수적으로 구현해야 한다. 활동이 생성되면 생성됨 상태가 된다. onCreate()에서는 활동의 전체 수명 주기 동안 한 번만 발생하여 하는 기본 애플리케이션 시작 로직을 작성하면 된다. 예를 들면 데이터를 목록에 바인딩하고, 활동을 ViewModel과 연결하고, 일부 클래스 범위 변수를 인스턴스화 하는 등을 작성하면 된다. 활동은 생성됨 상태에 머무르지 않고 onC..

article thumbnail
Reflection (리플렉션)
Android/Java 2023. 6. 11. 10:16

리플렉션이란? 리플렉션은 자바의 기능 중 하나로, Runtime(실행 중)에 클래스의 정보를 동적으로 검사하고 조작할 수 있도록 한다. 리플렉션을 사용하면 클래스의 메서드, 필드, 생성자 등에 접근하고 호출할 수 있다. 리플렉션에 대해 이해하기 위해서는 JVM의 작동방식에 대해 이해할 필요가 있다. JVM은 클래스 로드시 Class Loader(클래스 로더)를 사용해 클래스에 대한 정보들을 저장한다. 이 때, 리플렉션에 사용되는 MetaData(메타데이터)를 Native Memory의 Metaspace(메타스페이스)에 저장한다. 리플렉션을 호출하는 시점에는 이미 해당 클래스의 로딩과 메타데이터 저장이 완료된 상태일 수 있다. 정리하자면 리플렉션은 로딩된 클래스의 메타데이터를 활용하여 클래스의 정보를 동적..

article thumbnail
JVM의 내부 구조와 작동
Android/Java 2023. 6. 10. 15:15

자바의 프로세스는 JVM에서 실행되는 독립적인 실행 프로그램이다. 자바 프로세스는 운영 체제에서 실행되기 위해 자원을 할당받고, 메모리 공간을 사용하며, 시스템 자원을 활용하여 작업을 수행한다. 자바 프로세스는 JVM을 통해 자바 언어로 작성된 소스 코드를 바이트 코드로 변화하고, 해당 바이트 코드를 실행해 프로그램을 동작시킨다. 이제부터 JVM에 대해 자세히 알아보겠다. 만약 JVM이 뭔지를 모른다면 아래의 게시글을 읽고 돌아오길 바란다. JVM & JRE & JDK 자바를 공부해본 사람이라면 자바는 플랫폼에 독립적이고, WORA("Write Once Run Anywhere" - 한 번 작성하면 모든 곳에서 돌릴 수 있다)는 말을 들어봤을 것이다. public class Main { public sta..

[Kotlin Coroutine] (6) - 채널 2
Android/Kotlin 2023. 6. 8. 09:58

ConsumeEach() 그럼 명시적인 이터레이션을 사용하지 않고 채널에 있는 내용을 수신할 수는 없을까?? 이를 위한 메서드가 바로 consumeEach()이다. channel.consumeEach { println("Receiving Num $it") delay(100) } 위의 함수를 사용하면 송신측의 receive를 했을 때와 똑같은 결과를 얻을 수 있다. 또한 한 채널에서 생성한 데이터를 여러 개의 수신측이 가져갈 수도 있다. 이를 통해 데이터를 분류해서 처리할 수 있게 될 것이다. Produce() sequence() 함수와 비슷한 동시성 스트림을 생성할 수 있는 produce()라는 코루틴 빌더가 있다. 이 빌더는 ProducerScope 영역을 도입한다. fun main() { runBlo..

article thumbnail
Android App Architecture (안드로이드 앱 아키텍처)
Android 2023. 6. 7. 12:09

앱 아키텍처 가이드 | Android 개발자 | Android Developers 앱 아키텍처 가이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함 developer.android.com 앱의 구성요소는 개별적이고 비순차적으로 실행될 수 있으며, 운영체제나 사용자가 언제든지 앱 구성요소를 제거할 수 있다. 이러한 이벤트는 직접 제어할 수 없기 때문에 앱 구성요소에 애플리케이션 데이터나 상태를 저장해서는 안 되며 구성요소가 서로 종속되면 안된다고 안드로이드는 말한다. ✔ 4가지의 일반 아키텍처 원칙 그래서 안드로이드의 앱은 견고성을 높이며 앱을 더 쉽게 테스트할 수 있도록 아키텍처를 정의하는..

article thumbnail
RxJava에 대해
Android/Kotlin 2023. 6. 6. 20:44

RxJava에 대한 공부를 시작하는 이유 요즘 프로젝트를 진행하면서 Retrofit2를 이용해 서버와 통신을 많이 진행하고 있다. 네트워크 요청은 Call 객체를 통해 비동기적으로 수행되고, enqueue() 메서드를 호출해 비동기로 요청을 실행하거나 execute() 메서드를 호출하여 동기적으로 실행할 수 있다. 예시는 아래와 같다. interface MyApiService { @GET("users/{id}") fun getUser(@Path("id") userId: String): Call } val BASE_URL = "baseurl" val retrofit = Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFacto..