목록안드로이드(Android) (70)
Simple&Natural
getString의 경우 키에 해당하는 값이 없는 경우 JsonException을 발생시키는 반면 optString은 ""와 같은 빈 문자열을 반환한다. 간혹 null이라고 잘못 설명한 글이 있는데 String타입의 빈 문자열을 반환하는 것임을 혼동하지 말자. 예상치 못한 에러를 방지하기 위해서는 optString을 사용하는 것이 좋다.
안드로이드 뿐만 아니라 프론트와 디자인을 다루는 모든 개발자이너[?] 들은 색상을 다룰 일이 많다. 특히 처음 입문하는 사람들에겐 RGB와 HEX로 표기되는 이러한 색상 표기법들이 이해하기 상당히 어렵다. 색을 표현하는 여러가지 방법 중에서 빛의 세 가지 원색(Primary Color)을 이용하여 특정 색을 표현하는 표기법을 RGB모델이라고 한다. 세 가지 원색이 각각 빨강(Red), 초록(Green), 파랑(Blue)인 것으로부터 나온 약어이다. 이때 각 광원의 강도는 0~255까지로 지정할 수 있는데 R, G, B 각각이 256개의 광도를 가질 수 있으므로 구현이 가능한 총 색상의 종류는 256*256*256 = 16,777,216 가지이다. 우리가 필요한 웬만한 색은 거의 모두 구할 수 있다고 보면..
멀티스레드 환경에서 싱글톤 객체를 초기화할 때 발생할 수 있는 문제는 서로 다른 객체들이 동시에 생성될 수 있다는 것이다. 이는 가뜩이나 취약한 모바일 기기의 하드웨어(특히 메모리)의 낭비를 일으킬 수 있다. 이 문제에 대해 간단하게는 synchronyzed를 이용한 동기화 방법이 있다. 그러나 이는 클래스에 대한 스레드의 block을 유발하므로 성능이슈가 발생하게 된다. 따라서 volatile을 이용하여 메인메모리에 초기화 시켜두고 getInstance를 이용하여 호출하는 방법을 권장하고 있다. https://medium.com/@oznusem/the-right-way-to-write-a-singleton-when-developing-for-android-or-any-multithreaded-envir..
EUC-KR로 인코딩된 웹문서를 안드로이드 앱으로 불러오면 종종 글자가 깨져보이는 경우가 발생하는데 이때 받아오는 inputStream에 charset 인코딩 타입을 지정해주어야 한다. val response = httpRequest(mClient, newsUrl) val inputStream = response?.body?.byteStream() //임시코드, null 예외처리를 이렇게 겹쳐 쓰는 건 지양해야 함 val inputStringReader = InputStreamReader(inputStream, "euc-kr") 블로그를 돌아다니다 보면 다 웹문서를 올바르게 표시하고 싶어하는 질문들에 대해 이상한 답변이 달려있는 경우가 많은데... 예를 들면 String(word.toByteArray("..