본문 바로가기

안드로이드

(4)
코틀린 Flows의 소개 Flow는 코틀린 언어에 있는 것으로 특정시간에 걸쳐 여러 값을 순차적으로 방출하는 특징이 있는 것입니다. 예를 들면 Flow를 사용하여 API에 최신 업데이트를 가져와 Flow 연산자로 수정할 수 있습니다. Flow에 대해 설명하기 전에 Hot/Cold stream에 대해서 짚어보겠습니다. HotStream은 수신자가 없어도 데이터를 전송합니다. 반해 ColdStream은 수신자가 있을 때만 전송합니다. 예를 들어 Channels은 HotStream 입니다. HotStream은 매번 data flow 가 있기 때문에 수신자를 제어해야합니다. 데이터 손실 혹은 메모리 누수를 일으킬 수 있기 때문입니다. 반면 ColdStream은 요청할 때만 수집을 시작합니다. kotlin의 flow는 코틀린의 Corou..
Context 클래스 Context 클래스로 가능한 것 - 액티비티 시작 - 브로드캐스트 발생 - 서비스 시작 - 리소스 접근 Context 하위 클래스 Contex 는 추상클래스인데 메서드 구현이 거의 없이 상수 정의와 추상 메서드로 이루어진다. - ContextWrapper (직접 상속) - Activity - Service - Application ContextImpl ContextImpl은 앱에서 싱글톤으로 단 1개의 인스턴스만 갖고 있지 않다! ContextWrapper에 getBaseContext()는 각각 getApplicationContext()라는 2개의 메서드가 별도이다. getBaseContext()는 각각 ContextImpl 인스턴스를 리턴한다. getApplicationContext()는 Applic..
코루틴 디버깅 로그에서 코루틴 식별 디버깅 중에 코루틴을 식별할 필요가 있을 때가 있다. private fun threadName() = Thread.currentThread().name 위 코드를 사용해서 Thread를 식별할 수 있다. 코루틴에 특정 이름 설정 물론 코루틴에 특정 이름을 설정하는 방법도 있다. withContext(pool + CoroutineName("inner") { } 위처럼 CoroutineName을 통해 가능하다. CoroutineNeme은 컨텍스트 요소 이므로 + 연산자로 사용해 설정할 수 있다. 디버거 감시 추가 Debug Tool 창의 [Variables] 부분에 New Watch 버튼과 브레이크 포인트를 통해 스레드의 이름을 감시할 수 있다. Condition : Thread.cur..
RecyclerView 의 Payload 오늘은 RecyclerView의 Payload에 대해서 글을 작성해볼게요. 기본적으로 다들 RecyclerView를 사용해보셨을거에요. 그러면서 보통은 notifyDataSetChanged() 로 전체 갱신 때려버리는 경우가 많은데 성능 상으로 좋은 방법은 아니죠. 특정 position만 갱신할 때에는 notifyItemChanged(position) OR notifyRangeChanged(positionStart, itemCount)를 사용해야합니다. onBindViewHolder에서 생성된 뷰홀더를 재사용하여 position에 맞게 바인딩 처리를 하고 있는건 모두 알고 계실거에요. 그런데 모든 View를 업데이트 하지 않고 특정 View만 애니메이션 처리 및 text만 변경하는 작업을 하고 싶을때 조..