| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Android
- 운영체제
- 플로이드워셜
- appcompatacitivity
- NestedScrollView
- 프로세스
- 디자인 패턴
- Kotlin
- appcompatactivity
- http 역사
- DiffUtil
- recyclerview
- 상태관리
- 물리 메모리
- 리사이클러뷰풀
- Dispatchers
- 자이고트
- AsyncListDiffer
- flutter
- 데코레이터 패턴
- 리사이클러뷰
- 안드로이드
- 뷰홀더
- apk 빌드 과정
- GetX
- 절대 주소
- AAC
- viewModelScope
- http발전과정
- 내부 단편화
- Today
- Total
목록2023/02/11 (6)
hong's android
Apk 빌드 과정 1. 안드로이드의 리소스 파일들을 코드레벨에서 구분하기 위해서 aapt는 R.java를 만든다. 2. R.java와 작성한 코드들 그리고 aidl에 의해서 만들어진 자바 인터페이스들은 자바 또는 코틀린 컴파일러에 의해서 클래스파일로 컴파일된다. 3. 클래스 파일들과 3rd party 라이브러리들은 그 후 art 가상머신에서 실행하기 위해서 dex파일로 만들어진다. 4. dex파일은 컴파일된 리소소들, 다른 리소스들이 합쳐져서 apk가 만들어지는데 해당 apk를 키스토어로 서명한다. 5. 또 이 apk를 적은 메모리를 사용할 수 있게 하는 zipalign을 통해 최종 apk를 만들어낸다. *zipalign: 보관 파일 중 압축되지 않은 모든 파일이 파일 시작 부분을 기준으로 정렬되도록 하..
java.lang.Object란 java.lang 패키지에는 프로그래밍을 위한 다양한 클래스들이 모여있고 이를 활용 할 수 있다. (다른 패키지와 다르게 import 구문 없이 사용 가능하다.) 그중에서 object는 클래스들의 가장 상위 클래스이고 프로그래밍을 위한 다양한 메소드들을 제공한다. 1. equals() 동일한 객체인지 판단한다. 기본적으로 == 연산자를 통해 객체의 동등함을 판단하는데 이때 객체의 주소값을 갖고 판단한다. 그렇기에 두 객체의 내용이 같다는것을 판단하기위해선 따로 equasl() 메소드를 오버라이드해서 사용해야한다. (Collection 프레임워크 몇몇 클래스는 객체의 동등성을 판단하기위해서 객체의 hashcode() -> equals() 메소드를 통해 확인하기 때문에 위 프..
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이 되므로 원하는 값을 가져오지 못한다. 위 예는 두 개의 스레드 밖에 없..