'Android' 카테고리의 글 목록 (2 Page) — SH's Devlog

Android

Android/Basic

[Android] BuildConfig과 ProductFlavors로 빌드 변형 구성하기 (Configure Build Variants)

이번에는 Gradle 빌드 변형 구성에 대해 알아보겠습니다. 먼저, 현재 빌드정보를 담고있는 buildConfig에 필드를 추가하는 방법 필드의 정보들을 불러오는 방법을 알아보겠습니다. 그리고 BuildType, ProductFlavors마다 BuildConfig을 변형 구성하는 방법과 Source Set을 바꿔서 구성하는 방법을 알아보겠습니다. BuildType이란? buildType은 일반적으로 개발자가 새 모듈을 생성하면 debug와 release 두 가지를 생성합니다. debug는 빌드 유형을 선언하지 않더라도 Android Studio에서는 debuggable true를 default값으로 구성하며 이 속성 덕분에 Android 기기에서 앱을 디버깅할 수 있습니다. release는 출시용 bui..

Android/RxJava

[RxJava] flatMap의 원리 및 Observable 스트림 종료 후 다시 이어가기

flatMap의 원리와 Observable 스트림 종료 후 다시 이어가기 RxJava는 데이터 스트림에 여러 연산자들을 체이닝하여 데이터를 조작할 수 있습니다. 원본 데이터에 체이닝하면서 데이터를 처리하기 위해서 거의 대부분의 경우에 flatMap, concatMap, switchMap을 사용하여 처리할 텐데, 이유는 이 연산자들은 방출되는 각각의 데이터 마다 Observable을 생성하여 데이터를 처리할 수 있게 해주므로 스레드 관리에 효과적이기 때문일 것입니다. 그런데 여기서 생산자에 따라 차이가 생기게 되며, 이 포스트에서는 flatMap을 예로 들어보겠습니다. Single, Maybe, Completable은 1 혹은 0개의 데이터를 발생하고 스트림을 종료합니다. 그래서 이 생산자들은 어짜피 하..

Android/Kotlin(Java)

[Kotlin] Comparable Interface 상속으로 클래스 비교하기

두 객체를 비교할 때 객체의 특정 원소를 통해 비교를 하려면 compareTo() 메소드를 통해 간단하게 비교할 수 있습니다. 또한, 이 compareTo() 메소드는 단순히 객체간의 비교 뿐만 아니라 List의 정렬에서도 사용됩니다. 자바와 코틀린에서는 이 compareTo() 메소드를 쉽게 사용할 수 있는 Comparable 인터페이스를 제공합니다. Comparable package kotlin /** * Classes which inherit from this interface have a defined total ordering between their instances. */ public interface Comparable { /** * Compares this object with the s..

Android/Kotlin(Java)

[Kotlin] Collections API - associate(), associateBy, associateWith(), groupBy()

associate associate()를 이용하면 List를 Map 형태로 변형시킬 수 있습니다. 단, groupBy()와의 차이점이 있습니다. associate()는 groupBy()와는 달리, key가 중복이 되면 마지막 요소를 Map의 value로 저장합니다. (groupBy()는 Map 형태로 만들기 때문에 key가 중복이 되어도 List에 전부 담을 수 있습니다.) 1. associate() associate() 함수 public inline fun Iterable.associate(transform: (T) -> Pair): Map { val capacity = mapCapacity(collectionSizeOrDefault(10)).coerceAtLeast(16) return associat..

Android/Kotlin(Java)

[Kotlin] Collections API - groupingBy() 와 Grouping

groupingBy groupingBy()를 이용하면 데이터들을 그룹화 시키는 Grouping 객체를 만들 수 있습니다. Grouping 클래스에는 그룹화 되어있는 데이터들에 대한 연산을 수행하는 메소드들을 가지고 있습니다 groupingBy()는 4가지 클래스에서 사용할 수 있습니다. Iterable.groupingBy() Array.groupingBy() Sequence.groupingBy() CharSequence.groupingBy() Grouping의 확장함수 aggregate() 함수 aggregate()는 Grouping의 인자들을 key로 그룹화 하고 각 그룹의 요소에 순차적으로 연산(operation)을 적용하고 누적값(accumulator) 결과를 Map에 저장합니다. @SinceKot..

Android/RxJava

[RxJava] RxJava retryWhen으로 예외발생시 일정시간 간격으로 재시도 처리하기(retryWithDelay)

Rxjava를 사용할 때 예외처리 과정에서 retryWhen()을 사용하면 재시도를 구현할 수 있습니다. 이번 포스트에서는 retryWhen 메소드에 대해 정리해보겠습니다. retryWhen의 마블 다이어그램 retryWhen의 마블 다이어그램을 해석 먼저, Observable에서 에러가 발생됩니다. 그러면 retryWhen을 타게 되는데 retryWhen에서 데이터가 발행되면 -> upstream을 재실행합니다. retryWhen에서 에러가 발행되면 -> 최종적으로 error를 발행합니다. Flowable의 retryWhen 구현부 public abstract class Flowable implements Publisher { // ... @CheckReturnValue @NonNull @Backpre..

Android/Kotlin(Java)

[Kotlin] 상속(Inheritance)에서 copy()를 사용하고 싶을 때 data class 활용에 대하여

open class 사용 open class Player(open val name: Name) { // ... open fun copy() = Player(name) } data class GamePlayer( override val name: Name ): Player(name) class CopyTest { @Test fun copyTest() { val players: List = listOf(GamePlayer(Name.from("player1")), OtherPlayer(Name.from("player2"))) players.map { it.copy() } // player copy() } } 문제발생 컬렉션에서 방어적 복사를 해주기 위해 부모클래스의 copy()를 사용하고 싶어서 open 메소..

Android/NextStep

[NextStep] Kotlin TDD 5주차 정리 - OOP

보호되어 있는 글입니다.

Android/TDD

[Kotlin/TDD] Intellij에서 Test 코드 실행시 Test Results 결과가 console에 표시되지 않는 문제 해결법

문제 발생 @ParameterizedTest의 세부결과를 포함하여 총 22개의 Test 결과가 나와야 하는데 Test 결과가 하나로 나왔다. 해결 방법 Preferences -> Build, Exceution, Deployment -> Build Tools -> Gradle 탭으로 이동 Run tests using의 속성을 IntelliJ IDEA로 변경해주고 Apply 해준다. 모든 Test Result값이 정상적으로 Console창에 뜨는 것을 확인할 수 있다. 참고 https://sorravit.medium.com/fix-junit5-display-name-did-not-show-in-run-tab-intellij-a00c94f39679

반응형
seunghwaan
'Android' 카테고리의 글 목록 (2 Page)