| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- flutter
- 자이고트
- Kotlin
- 플로이드워셜
- DiffUtil
- 안드로이드
- apk 빌드 과정
- 데코레이터 패턴
- 리사이클러뷰
- NestedScrollView
- GetX
- Dispatchers
- AsyncListDiffer
- 물리 메모리
- 상태관리
- 디자인 패턴
- 내부 단편화
- Android
- AAC
- appcompatactivity
- appcompatacitivity
- 운영체제
- recyclerview
- http발전과정
- viewModelScope
- 뷰홀더
- http 역사
- 리사이클러뷰풀
- 프로세스
- 절대 주소
- Today
- Total
목록분류 전체보기 (77)
hong's android
Collection 이란? 목록성 데이터를 처리하는 자료구조 - java.util 패키지에 Collection은 속해있다. - 형태가 비슷한 여러개의 값들을 저장하고 관리하기 위해선 배열이 필요하다. 하지만 크기가 지정되어있지 않은경우엔 따로 배열의 크기를 필요에 따라 계속 늘려주는 작업을 해야한다. Collection 인터페이스는 가변 크기를 가진다. - 하위 인터페이스는 List,Set,Queue,Map이 있고 구현 클래스들은 아래와 같다. 자료구조 : 데이터들을 효율적으로 처리하기위해 만든 구조 특징 1. collection은 iterable인터페이스를 구현하기 때문에 데이터를 순차적으로 가져올 수 있다. Public inetrface Collection extends Iterable 2. List..
동시성 문제 멀티 스레드 환경에서 같은 자원을 사용할 때 예상했던 값과 다르게 결괏값을 가져오는 경우가 있다. 동시성 문제들의 종류는 가시성 문제와 원자성 문제가 있다. 1) 가시성 문제 캐시와 메모리의 불일치로 생기는 문제이다. 예를들어, 한 스레드가 데이터를 가져오는 캐시가 메모리와 동기화되어있지 않다면 다른 결과 값을 가질 수 있다. 2) 원자성 문제 원자성 문제는 cpu의 instruction을 수행하는 과정에서 다른 cpu의 스레드가 그 사이에 해당 값에 접근을해서 값을 바꾸게 되는것이다. 이렇게 되면 연산을 원자 단위로 나누지 못한다. 위 가시성 문제를 해결한다고 원자성 문제도 해결되지 않는다. 예를 들어 메모리가 동기화되어있다고 가정하고 A 스레드가 공유 자원 int value에 +1을 할 ..
제네릭 이란? 내부에서 타입을 정하지않고, 외부에서 지정, 클래스나 메소드에서 다양한 타입을 사용할 수 있도록 데이터 타입을 일반화한다. (자바 5부터 새롭게 추가) 제네릭이 없이 다양한 타입을 클래스 또는 메소드에서 사용할때 객체들의 최상위 클래스인 object로 타입 파라미터를 받는다. 클래스 외부에서 타입을 지정한 다음, 해당 객체의 값을 가져와서 사용한다. 이때 클래스 외부에서 객체의 값을 사용하기 위해 형 변환을 해야하는데 그대로 사용하거나 잘못된 형변환을 하게되면 런타임에 오류가 생길 수 있다. 제네릭으로 다양한 타입을 클래스 또는 메소드에서 사용할때 클래스 외부에서 동적으로 타입을 지정한다. 객체의 값을 사용해야할때 강제로 형변환을 할 필요없이 제네릭 타입으로 지정한 값을 사용할 수 있다. ..
Synchronized 사용 이유 멀티 스레드를 이용해서 한 프로그램에서 동시에 다른 스레드들을 실행할 수 있다. 하지만 동시에 동일한 변수, 객체, 메서드에 접근한다면 원하지 않은 값을 결과로 얻을 수 있다. 예를 들어, Int limit = 10; 이란 값을 가진 클래스가 존재한다. main에서 두 개의 스레드를 실행해 메서드 실행을 완료한 후 limit의 값을 1 뺀다. (Limit 값이 0 이상에 있을 때만 값을 가져오게 하고 싶다.) 두 개의 스레드에서 동시에 limit이 위 메서드에 접근했다고 치면, 동시에 접근했을 때 두 개의 스레드 모두 조건에 만족한 뒤 메서드를 실행해서 limit 값을 1 빼준다. 그러면 결국 -1이 되므로 원하는 값을 가져오지 못한다. 위 예는 두 개의 스레드 밖에 없..
Setcontentview inflate 하는 과정을 거친다. 리소스 id에 해당하는 파일의 xml의 내용을 파싱하고 xml의 구조에 따라 뷰 그룹 객체와 뷰의 객체를 생성하고 그들의 관계를 추가하고 메모리에 적재한다. 내부적으로 layoutinflater를 사용한다. layoutinflater Xml에 있는 리소스를 실제 메모리에 올려준다. setcontentview() 를 통해 인플레이트 할 수 있지만 동적으로 뷰 객체를 가져와야하는 경우 LayoutInflater를 사용한다. 예를들어 리사이클러뷰에서 아이템뷰를 만들때 또는 커스텀 뷰를 만들때, 프래그먼트를 사용할때 따로 layoutinflater를 사용해서 inflate 하게된다. 메모리에 올리는 시점이 불명확해서 동적으로 인플레이트 하는경우 사용..
Pendingintent pending은 ‘보류’ 라는 의미를 가진다. Pendingintent는 당장 실행하지 않고 실행하기 위해 보류되어있는 인텐트이다. 사용자가 해당 앱을 실행하지 않는 상황에서는 해당 앱의 intent를 실행 시킬수 없다. 예를들어, 1.어떤 파일을 다운로드를 완료해서 노티피케이션을 통해 intent를 실행 시켜야할때 2.특정 시간 마다 해당 앱을 실행 시키지 않아도 intent를 실행 시켜야할때 프로세스가 해당 앱을 점유중이 아니더라도 해당 앱의 intent를 실행시킬 필요가 생긴다. pendingintent는 다른 앱에게 인텐트를 실행 시킬 권한을 허가해 실행을 시킨다. * 노티피케이션은 안드로이드 시스템의 NotificationManager가 다른 프로세스에서 intent를 ..