Android(Kotlin) 261

Kotlin Any, is, as

자바에서 Object라는 개념이 코틀린에서는 Any가 됩니다. 모든 타입이 상속받는 최상위 타입이라고 할 수 있습니다. (모든 객체의 조상) 아래와 같이 사용해줄 수 있습니다. 위와 같이 아무 타입이나 들어가는 것을 볼 수 있습니다. 그러면, 이 친구가 null도 포함할까? 라고 해서 알아보면 Any? 라고 사용해줘야 합니다. 또한 타입 체크를 하다보면 is라는 친구가 나오는데 아래와 같이 사용해줄 수 있습니다. when을 사용해줄 수도 있습니다. 그런 다음 as라는 것도 어떻게 사용하는지 알아보면 type casting을 해줄 때 사용합니다. - 참조 https://ponyozzang.tistory.com/231 [Kotlin] 코틀린 Any와 Any?는 무엇이 다른가. 차이 설명 및 예제 자바의 최상..

Android(Kotlin) 2021.10.18

const val 과 val 차이

할당시점 val -> 런타임 시점에 할당됩니다 const val -> 컴파일 시점에 할당됩니다. 할당 가능한 타입 val -> 기본 참조 타입 const val -> 문자열과 기본 타입 -- 참조 https://jhdroid.tistory.com/14 [Kotlin] val과 const val의 차이 val 런타임 시 할당 val로 선언한 변수는 코틀린에서 프로퍼티로 get() 함수를 가지는 변수 해당 변수를 직접 변경할 수 없지만 get() 함수의 처리 방식에 따라 의도한 값과 다른 값이 나올 수 있음 jhdroid.tistory.com https://myung6024.tistory.com/144 (Kotlin) const와 val의 차이점 const는 컴파일 시간 상수입니다. 런타임에 수행 할 수있는..

Android(Kotlin) 2021.10.16

Constraint layout linear layout relative layout 퍼포먼스

Android에 View에 대해서 간단하게 보고 가겠습니다. 결론부터 말하면 퍼포먼스는 Constraint Layout이 좋습니다. 일단 View는 아래와 같은 순서로 그려지는데 1. 측정(Measure) 2. 레이아웃(Layout) 3. 그리기(Draw) 아래 뷰를 기존의 방식대로 배치하면 코드가 어떻게 되는지 보면 아래와 같습니다. 중첩되서 퍼포먼스가 떨어지는 경우가 생길 수 있는데, 이 부분은 castraint layout을 통해서 해결이 가능합니다. 아래와 같이 만들어줄 수 있습니다. - 참조 https://abandonia.tistory.com/1 [번역문] ConstraintLayout의 성능 이점에 대한 이해 * 본 게시물은 구글의 안드로이드 개발자 블로그 게시물을 번역(일부 의역)하여 게재..

Android(Kotlin) 2021.10.15

setvalue postvalue 차이

viewModel에서 livedata를 사용하다 보면, setvalue와 postvalue라는 친구들을 볼 수 있습니다. 이 친구들의 차이가 뭘까 하고 궁금해서 찾아봤는데 setValue() 메인 쓰레드에서 그 값이 즉시 반영됩니다. postValue() setvalue와 다르게 백그라운드에서 동작합니다. 내부적으로 동작하는 코드는 아래와 같습니다. new Handler(Looper.mainLooper()).post(() -> setValue()) setvalue와 다르게 가장 최신의 값이 변경이 되며, 즉시 값이 변경되지 않을 수 있습니다. - 참조 https://leveloper.tistory.com/179 [Android] LiveData setValue() vs postValue() 최근에 프로젝..

Android(Kotlin) 2021.10.08

코루틴과 쓰레드의 차이

코루틴을 사용하다보면, 이 것도 worker 쓰레드에서 동작하는데 그러면 일반적으로 사용하던 쓰레드와 뭐가 다른가? 라고 해서 보면 일반적인 쓰레드에서 작업을 할 때 A,B Task를 동작한다고 생각하면 A Task B Task Thread1 A-> -> -> ->-> Thread2 B-> -> -> ->-> 이렇게 2개의 쓰레드가 돌아갑니다. 코루틴의 경우 Thread1 A B A B A B 이런 식으로 작업 하나하나에 쓰레드 하나를 할당하는 것이 아닌 object를 할당하고, 자유롭게 스위칭하는 형태로 작업을 진행합니다. buildSequence runBlocking launch async 등을 이용해서, 태스크의 수행을 기다리거나, 순차진행하거나 하는 것들을 설정할 수 있습니다. https://ve..

Android(Kotlin) 2021.10.07

Android LruCache kotlin

안드로이드 개발을 하면서 이미지를 가져와봤으면 Glide를 당연히 사용해봤을 겁니다. glide를 사용하면 이미지 캐싱 어쩌고 나와 있는데, 그러면 비트맵 이미지 캐싱은 어떻게 하는가 하는 의문이 들어서 찾아보니 LruCache라는 것이 있네요. 제가 직접 비트맵 이미지 코드를 짜기 귀찮으니 구글에서 찾아봤습니다. 캐싱을 공부하던 도중에, 메모리에 다 올려버려도 될까? 라는 생각이 드는 와중에 코드 중간에 조금 특이한 부분이 cacheSize라고 지정해주는 부분이 있습니다. maxMemory/8 만큼 메모리를 할당한다는 것인데 저렇게 하면 되나? 라는 생각이 들어서 찾아보니 모든 애플리케이션에 적합한 특정 크기나 수식은 없으며 사용량을 분석하여 적합한 해결책을 찾아야 합니다. 캐시가 너무 작으면 아무런 ..

Android(Kotlin) 2021.10.06

Android thread, Handler, Looper

Android를 개발하다 보면 한번씩은 Thread, Hanlder, Looper를 들어보고 사용해봅니다. 얘네들이 Main Thread말고 별도로 Thread에서 작업한다는 것을 알겠는데 뭐가 다른지 한번 알아보겠습니다. 일단 안드로이드 앱을 실행하면 메인 액티비티를 메모리로 올려 프로세스를 들며 메인 쓰레드(UI Thread)가 생성됩니다. 그러면 메인 쓰레드에서 모든 것을 다 하면 되는데 왜 안할까? 를 생각해보면 긴 시간이 걸리는 작업(네트워크 통신)등을 한다면 애플리케이션 반응성이 낮아지고 ANR 상태가 발생할 수 있습니다. 때문에, Looper와 Handler를 사용합니다. 메인 쓰레드는 내부적으로 Looper를 가지고, 그 안에 Message Queue가 선입선출 형태로 보관됩니다. Loop..

Android(Kotlin) 2021.09.14

Shared Preferences

Shared Preferences란 무엇인지 알아보면, 텍스트 그대로 해석하면 공유된 참조값? 정도로 할 수 있겠네요. 서버에서 받아온 Token이나 로그인 정보같은 것들을 저장해놓고, 필요할 때 꺼내다쓰는 용도 정도로 사용하면 됩니다. 앱 전역에서 사용해줄 것이기 때문에, 싱글톤으로 적용해줍니다. 자, 한번 어떻게 코딩했는지 살펴보면 - 참조 https://leveloper.tistory.com/133 [Android] SharedPreferences 간단하게 사용하기 (Kotlin) 안드로이드 앱을 개발하면서 데이터를 저장하는 방법으로는 여러 가지가 있는데, 오늘은 그중 하나인 SharedPreferences를 사용하는 방법을 알아볼 것이다. SharedPreferences란? SharedPrefer..

Android(Kotlin) 2021.09.10