동식이 블로그

[Android] Shared Preference 암호화

EncryptSharedPerference, KeyStore, RSA

[Android] Shared Preference 암호화 새해 첫 글 !! 앱내에 데이터를 캐싱할때 Room을 사용해서 저장하거나, SharedPreference로 값을 저장하곤 한다. SharedPreference를 사용하면 1 2 3 <map> <string name="lastSync">16727141076...

[Android] Gradle BuildType

BuildType.kt 뜯어보기

[Android] Gradle BuildType build.gradle을 Groovy에서 KTS로 마이그레이션을 하면서 gradle에 대한 무지함을 깨닫고.. 프로젝트 시작할 때 말고는 이 빌드 스크립트를 들여다보지 않았구나..라는 생각에 다시 한번 공부의 필요성을 느끼고 시작한다 먼저 build.gradle내의 buildTypes 에 대해...

[Android] Reduce App Size

Apk Analyze를 통한 app size 줄이기

[Android] Reduce App Size 너무너무너무너무 큰 앱 사이즈를 한번 줄여보자 굉장히 바보였다고 한다… 일단 앱 사이즈를 줄이기 전 앱 사이즈를 Android Studio의 APK Analyze를 통해 알아보자 이상하다… 분명 이 앱은 기본적인 CRUD기능만 있는.. 앱 사이즈가 크면 안되는 앱인데 무려 76.9MB...

[Android] OkHttp3 ConnectionSpecs

TLS / Cipher Suite

[Android] OkHttp3 ConnectionSpecs 무언가를 새롭게 배운다는건 신기하고 즐거운 일인 것 같다. 오늘도, 지식 + 1 Okhttp3를 통해서 여러가지 작업을 할 수 있다. 대표적으로 Interceptor를 붙여준다던지, Timeout 설정을 한다던지 이런 작업류들을 보통 많이 사용하고 자주들 접해봤을거라고 생각한다....

[Kotlin] Flow (1) - Flow 기초

Flow 기본 사항

[Kotlin] Flow (1) - Flow 기초 Flow에 대해서 알아보자 Flow란? 순차적으로 값을 내보내고 정상적으로 또는 예외로 완료되는 비동기적인 데이터 스트림이다 Flow Cold Flow는 기본적으로 Cold Stream 이다 즉, Flow { } 빌더의 코드블럭은 Flow가 collect되기 전까지 실행...

[Kotlin] TDA원칙이란

Tell, dont's ask!

[Kotlin] TDA원칙이란 TDA란? Tell, don’t ask로, 물어보지 말고 그냥 시켜라 라는 말로 번역된다. 객체지향적 사고방식 원칙 중 하나로, 객체에게 정보를 요구하지 말고 그냥 행위하도록 시키라는 의미로 보면 될것같다. 객체에게 정보를 요구하지 말라는것은, 데이터를 getter로 요청하지 말 것을 의미한다. 왜 요청하지 말라고...

[Android] TextView.getText()

TextView의 text를 가져오자

[Android] TextView.getText() 오랜만에 간단한 글.. 정신차리고 코딩 TextView의 LineCount를 가져오려면 해당 TextView가 그려진 다음에 TextView의 .lineCount 메서드를 통해서 값을 가져올 수 있다. 그렇게 하려면 ViewTreeObserver를 단다던지… textView에 .post ...

[Android] Paging3 Pager 내부에서 일어나는 일

Paging3 Pager 내부 들여다보기

[Android] Paging3 Pager 내부에서 일어나는 일 이전 글에서 PagingDataAdapter의 submitData에 대해서 알아보았다 이전 글 : Paging3 PagingAdater가 UI를 업데이트하기까지 Paging3 version 3.0.1 이번엔 Pager에 대해 알아보자. Pager는 PagingSourc...

[Kotlin] Coroutine 내부동작

suspend가 어떻게 돌아가는지

[Kotlin] Coroutine 내부동작 코루틴의 내부 동작에 대해 알아보자 코루틴을 사용할 때 익숙하게 보아왔던 suspend. 일시 중단을 가능하게 해주는 한정자인데, 어떻게 일시 중단이 되며 다시 재개될 수 있는지 알아보도록 하자 suspend 한정자가 달린 함수를 디컴파일 해보면 Continuation Passing Style(...

[Kotlin] Value Class

Value Class란 무엇일까

[Kotlin] Value Class Value Class 객체를 생성하는 비용을 줄여주는 class 1 2 3 4 5 6 @JvmInline value class Color private constructor(val rgb: Int) { companion object { fun rgb(rgb: Int) = Color(rgb) } ...