일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- apk 빌드 과정
- 데코레이터 패턴
- viewModelScope
- 리사이클러뷰풀
- 플로이드워셜
- GetX
- 내부 단편화
- 리사이클러뷰
- 디자인 패턴
- flutter
- NestedScrollView
- 운영체제
- http발전과정
- 절대 주소
- 뷰홀더
- appcompatacitivity
- Dispatchers
- 상태관리
- Android
- recyclerview
- 물리 메모리
- appcompatactivity
- AAC
- Kotlin
- 프로세스
- 자이고트
- DiffUtil
- 안드로이드
- AsyncListDiffer
- http 역사
- Today
- Total
목록전체 글 (77)
hong's android

오브젝트풀링 이란? 객체들을 매번 새로 생성/제거하지 않고 풀 안에 기존 객체들을 재사용하는 디자인 패턴 언제 사용할까? 스레드를 생성하고 수거할때 스택 메모리를 이용(할당, 초기화) 해야 하기 때문에 매번 생성하는 것은 비교적 비용이 높다. 그래서 오브젝트 풀링 방식인 스레드풀을 사용해서 스레드를 재사용하면 오버헤드를 줄일 수 있다. 또한 개발자 입장에서 스레드 마다 생명주기를 신경 쓰지 않아도 된다. 하지만 풀에 너무 많은 스레드를 생성해 놓는다면 메모리 낭비로 이어진다. java.util.concorrent 패키지에 Executors 클래스를 사용해서 스레드 풀(Object polling 방식)을 사용할 수 있다. Executors클래스는 Executor Service 인터페이스의 구현 객체를 생성..
옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다. 주제 - 옵저버로 일대다 관계가 이루어지고 주제의 상태가 바뀌면 옵저버들에게 연락이 간다. 왜 옵저버 패턴을 사용할까? 만약 데이터의 변경사항에 따라 다른 객체에게 알려야하는 로직을 구성할때 아래와 같이 구성된다. observer1.notify(int data1,int data2,int data3); observer2.notify(int data1,int data2,int data3); observer3.notify(int data1,int data2,int data3); subject 클래스 안에 위 로직으로 구성 할 수 있다. 위 로직은 subject ..
AAC(Android Architecture Components)란? AAC 는 테스트와 유지관리가 쉬운 앱을 디자인하도록 돕는 라이브러리 모음 LiveData 관찰 가능한 데이터 홀더 클래스이다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명 주기를 인식한다. //LiveData.java private SafeIterableMap

Coroutine Main-Safe 한 경량 스레드 선점/비선점 선점 : task는 스케쥴러에 의해 cpu에 할당된다. 다른 task가 할당됐을 때 스케쥴러에 의해서 cpu 사용권을 뺐을 수 있다. 비선점 : 스케쥴러가 cpu사용권을 뺐을 수 없다. 코루틴은 비선점 멀티 태스크이고 태스크 여러 개를 번갈아가면서 실행한다. (동시성 지원) 협력형 멀티태스크 다수의 태스크들이 실행시간을 나눠 갖는다. 태스크들은 서로 실행을 양보할 수 있다. 코루틴 - Task 단위를 스레드 내부 object들로 나눈다. - 스레드 내부에서 Object를 나눠서 실행하므로 콘텍스트 스위칭 x - 가벼운 비용으로 비동기 실행 - 동시성 제공, 병렬성 x - 스케쥴러가 아니라 프로그래머에 의해 실행, 중지, 재개 시점이 결정된다..

Object 클래스 // Object // equals 메서드 public boolean equals(Object obj) { return (this == obj); } Object 클래스의 대표적인 메소드들 1. equals() : 참조 값을 비교한다. 2. hashcode() : 객체의 주소값을 해시값으로 변환하여 반환한다. 3. toString() String 클래스 String 클래스의 equals는 문자열의 값을 비교한다. Object 클래스를 상속받아서 위와 같이 equals를 오버라이딩 했기 때문이다. 두 객체가 같은 경우 값 비교를 하지않고 동일하다고 판단한다. 다른 경우 서로의 string값을 비교한다. // String.java // 자바 8 public int hashCode() { ..
기존 notifyDataChanged()의 단점리사이클러뷰를 사용할 때 아이템 뷰의 데이터가 변경되어서 업데이트를 해야 하는 경우 notifyDataChanged() 함수를 통해 리사이클러뷰에게 알리게 된다.notifyDataChanged() 함수는 업데이트를 할 때 모든 아이템 뷰의 데이터들을 업데이트를 하기 때문에 적은 개수의 아이템을 업데이트하는 경우 비효율적이다. DiffutilDiffutil은 olditems와 newitems의 차이를 계산해서 업데이트해야 하는 아이템들만 변경하게 된다.추상 클래스인 DiffUtil.Callback을 사용해서 구현을 하게 된다.4가지의 추상 메서드와 1가지의 비 추상 메서드를 가지고 있다. getOldListSize() : 바뀌기 전 리스트의 크기를 반환합니다...