728x90

Android

    [Android] RxKotlin과 Retrofit2를 사용해 Github api 정보 가져오기

    RxKotlin과 Retrofit2를 사용하여 api 통신 하는 예제입니다. 예제에서는 Github에서 제공하는 api를 사용하여 사용자의 repository 정보들을 가져옵니다. 1. dependency 추가 Rxkotlin과 Retrofit2 의존성을 app 수준의 gradle 파일에 추가해줍니다. /* Retrofit2 */ implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.squareup.okhtt..

    [Android] Glide 라이브러리 사용하기

    Glide란? 구글에서 공개한 이미지 라이브러리 가장 성능이 좋은 이미지 로딩 라이브러리로 알려져 있다. 기본적으로 사진 로딩과 동영상, gif 파일 로딩까지 지원한다. Gradle 추가 gradle에 Glide 라이브러리를 추가해준다. (https://github.com/bumptech/glide) build.gradle(Module:app) dependencies { implementation 'com.github.bumptech.glide:glide:4.10.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0' } Glide 기본 사용법 val imageView: ImageView = findViewById(R.id.imageView..

    [Android] 룸(Room) 지속성 라이브러리

    룸(Room)이란? 안드로이드 앱에서 SQLite 데이터베이스를 쉽고 편리하게 사용할 수 있도록 하는 기능이다. SQLite 위에 만든 구글의 ORM(Object-relational mapping)이다. 룸을 사용하면 앱의 단일 정보 소스로 제공되는 캐시를 통해 인터넷 연결 여부와 관계없이 앱에 있는 주요 정보의 일관된 사본을 볼 수 있다. 룸의 구성요소 (Database, Entity, Dao) 1. Database 데이터베이스 홀더를 포함하며 앱의 지속적인 관계형 데이터에 대한 기본 연결을 위한 기본 Access Point 역할을 한다. @Database로 처리된 클래스는 다음과 같은 조건을 충족해야 한다. RoomDatabase를 확장하는 추상 클래스여야 한다. 어노테이션 내에 데이터베이스와 연결..

    [Android] Jetpack Databinding이란?

    DataBinding이란? 코틀린에서 레이아웃을, 레이아웃에서 코틀린의 데이터를 직접 참조하는 라이브러리. 코틀린에서 레이아웃 파일에 의존적인 부분이 많이 사라지고 MVVM등의 패턴과 함께 사용된다. One-way binding은 데이터의 흐름이 단방향을 말하고, Two-way binding 데이터의 흐름이 양방향을 말한다. 기본 사용법 Databinding에서 사용되는 레이아웃 파일들의 Root태그는 이되어야 한다. .... 어떤 객체를 참조하여 데이터를 출력할 지 를 정의해 주어야 한다. 데이터를 선언한 후 @{user.firstName} 처럼 데이터를 View에 참조하도록 연결할 수 있다. 이벤트 처리 1. 메소드 참조 데이터가 바인딩될 때 생성된다. 핸들러에 이벤트를 할당하려면 호출할 메서드 이름..

    [Android] Executors를 활용한 스레드 병렬 처리

    안드로이드는 UI 스레드에서 데이터베이스에 접근하는 것을 제한하고 있다. 데이터베이스에 접근하기 위해선 다른 스레드를 생성해서 처리해줘야 한다. 이러한 비동기 작업을 하기 위해선 여러 방법이 있지만, 이번 포스팅에서는 그중 하나인 Executors를 활용한 방법을 다룰 것이다. Java에서는 java.util.concurrent.Executors와 java.util.concurrent.ExecutorService를 제공하며 이를 이용하면 간단히 스레드 풀을 생성하여 병렬 처리를 할 수 있다. Executors 클래스에서의 여러 static 메서드를 사용해 ExecutorService 인터페이스의 구현 객체를 만들 수 있는데, 이러한 객체가 스레드 풀이다. 스레드 풀은 작업 처리에 사용되는 스레드를 제한된..

    [Android] MediatorLiveData가 동작하지 않을 때

    안드로이드 프로젝트를 진행하며 MediatorLiveData를 처음 사용해보았다. MediatorLiveData는 한 개 이상의 LiveData를 데이터 소스에 추가하여 관찰할 수 있다. 이번 글에서는 오늘 겪었던 문제점과 LiveData와 MediatorLiveData의 개념을 다시 한번 정리해보고자 한다. 간단한 사용자의 정보를 가지고 있는 UserEntity와 모든 사용자의 정보를 조회하는 getAllUsers() 메서드가 들어있는 UserDao가 있다고 해보자. UserEntity @Entity(tableName = "user") class UserEntity { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") var id: Long = 0 ..

    [Android] LiveData 변형하기 (Transformations)

    안드로이드 미니 프로젝트를 진행하며 겪은 삽질과 거기서 배운 내용을 정리해보고자 한다. 내가 겪은 문제점은 다음과 같다. 뷰에서 DatePicker로 날짜를 선택하면, 선택된 날짜에 해당하는 정보들을 RoomDatabase에서 찾아 리스트로 표시해준다. 날짜에 해당하는 정보들은 LiveData로 묶어서 Observer를 걸어주었고, 날짜가 선택되면 쿼리를 날려서 LiveData 안의 value 값을 업데이트해주면 되었다. 하지만 생각했던대로 흘러가지 않았고, LiveData 안의 value 값을 업데이트해주기 위해 이것저것 찾아본 결과 Transformations이란 것을 알게 되었다. Transformations란? Transformations는 단어 뜻 그 자체로 LiveData를 변형한다고 생각하면..

    [Android] Jetpack WorkManager란?

    WorkManager란? 앱이 종료되거나 기기가 다시 시작되더라도 실행이 예상되는 연기 가능한 비동기 작업을 쉽게 예약할 수 있는 라이브러리 Background task 구현, 스케쥴 등을 쉽게 처리할 수 있도록 만든 기능이다. WorkManager 기능 Job 스케쥴링 : Job을 스케쥴링 할 수 있다. Job의 상태 모니터링 : 실시간으로 처리되는지 상태를 알 수 있다. Constraint : 원하는 조건에 Job이 동작하도록 제약을 줄 수 있다. Chaining Task : 여러 Job을 우리가 정한 순서대로 실행되도록 할 수 있다. WorkManager 주요 클래스 1. Worker 백그라운드에서 수행될 태스크를 의미한다. 추상 클래스인 Worker를 상속한 클래스를 구현하고 동작할 태스크를 구현..

728x90