일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- AsyncListDiffer
- 상태관리
- DiffUtil
- GetX
- 프로세스
- Kotlin
- 디자인 패턴
- NestedScrollView
- 자이고트
- AAC
- Dispatchers
- apk 빌드 과정
- 플로이드워셜
- 운영체제
- 안드로이드
- viewModelScope
- 데코레이터 패턴
- recyclerview
- http발전과정
- appcompatacitivity
- appcompatactivity
- 내부 단편화
- Android
- 리사이클러뷰
- flutter
- 물리 메모리
- 뷰홀더
- http 역사
- 리사이클러뷰풀
- 절대 주소
- Today
- Total
목록Android (23)
hong's android
Databinding 라이브러리이란? 프로그래밍 방식이 아니라 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리입니다. 기존에 findViewById()를 사용하면 Null 포인트 오류의 위험이 있다. Databinding은 UI 프레임워크 호출을 삭제할 수 있어 파일이 더욱 단순화되고 유지관리 또한 쉬워진다. 하지만 클래스 파일이 많이 생기고, 빌드 속도가 느려지는 등 단점들도 존재한다 Mvvm 디자인 패턴에서 AAC LiveData와 함께 사용해서 뷰와 뷰모델 간의 의존성을 낮출수 있다. 만악 example.xml을 작성하고 빌드하면 자동으로 관련 binding 클래스가 생긴다. xml에 data 태그를 정의하면 아래와 같이 binding 클래스에 sett..
코루틴 코루틴은 스레드 내부에 실행되는 경량 스레드입니다. Main - safe 한 동시성을 지원하고 콜백보다 가독성이 좋습니다. suspend 함수를 통해서 일시중단 - 재개할 수 있는 여러 진입 지점을 허용합니다. 이를통해 서브루틴들이 협력형으로 번갈아 가며 실행될 수 있다. 협력형으로 동작하기 위해 CPS 패러다임을 사용합니다. CPS(Continuation Passing Style) 패러다임 기본적인 원리는 매개변수로 콜백 인터페이스를 가진 Continuation 객체를 전달합니다. 매개변수를 받은 메소드에선 이를통해 다시 suspend된 메소드를 실행합니다. 결국 매개변수로 Continuation 객체를 전달하며 현재 supend된 시점에서 resume되게 만들어 같은 스레드 내부에서 협력형으로..
AAC(Android Architecture Components)란? AAC 는 테스트와 유지관리가 쉬운 앱을 디자인하도록 돕는 라이브러리 모음 LiveData 관찰 가능한 데이터 홀더 클래스이다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명 주기를 인식한다. //LiveData.java private SafeIterableMap

Coroutine Main-Safe 한 경량 스레드 선점/비선점 선점 : task는 스케쥴러에 의해 cpu에 할당된다. 다른 task가 할당됐을 때 스케쥴러에 의해서 cpu 사용권을 뺐을 수 있다. 비선점 : 스케쥴러가 cpu사용권을 뺐을 수 없다. 코루틴은 비선점 멀티 태스크이고 태스크 여러 개를 번갈아가면서 실행한다. (동시성 지원) 협력형 멀티태스크 다수의 태스크들이 실행시간을 나눠 갖는다. 태스크들은 서로 실행을 양보할 수 있다. 코루틴 - Task 단위를 스레드 내부 object들로 나눈다. - 스레드 내부에서 Object를 나눠서 실행하므로 콘텍스트 스위칭 x - 가벼운 비용으로 비동기 실행 - 동시성 제공, 병렬성 x - 스케쥴러가 아니라 프로그래머에 의해 실행, 중지, 재개 시점이 결정된다..
기존 notifyDataChanged()의 단점리사이클러뷰를 사용할 때 아이템 뷰의 데이터가 변경되어서 업데이트를 해야 하는 경우 notifyDataChanged() 함수를 통해 리사이클러뷰에게 알리게 된다.notifyDataChanged() 함수는 업데이트를 할 때 모든 아이템 뷰의 데이터들을 업데이트를 하기 때문에 적은 개수의 아이템을 업데이트하는 경우 비효율적이다. DiffutilDiffutil은 olditems와 newitems의 차이를 계산해서 업데이트해야 하는 아이템들만 변경하게 된다.추상 클래스인 DiffUtil.Callback을 사용해서 구현을 하게 된다.4가지의 추상 메서드와 1가지의 비 추상 메서드를 가지고 있다. getOldListSize() : 바뀌기 전 리스트의 크기를 반환합니다...

Lru Cache(Least Recently Used Cache) 란? 가장 오랫동안 참조되지 않은 값(노드)을 삭제하고 비교적 최근에 참조된 값(노드)들을 저장하는 캐시 방식 Double Linked List를 기본적으로 사용한다. Head에 가까운 노드일수록 최근에 참조된 노드, tail에 가까울수록 참조가 오랫동안 되지 않은 노드이다. 만약 정해진 cache size가 초과된 상황에서 노드(값)를 추가할 때 tail에 가장 가까운 노드가 삭제되고, 새로운 참조 노드가 head에 가깝게 추가된다. 안드로이드에선 Lru Cache방식을 사용하기 위한 관련 클래스를 제공한다. 캐시 크기 설정시 주의점 모든 애플리케이션에 적합한 특정 크기나 수식은 없으며 사용량을 분석하여 적합한 해결책을 찾아야 합니다. ..