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

리스트뷰와 리사이클러뷰 차이점 둘 다 뷰 재활용을 할 수 있지만 리스트 뷰는 뷰 홀더 패턴을 따로 적용해야 합니다. - 리사이클러뷰는 뷰홀더 패턴으로 재활용을 강제합니다. 리스트뷰는 애니메이션 지원이 되지 않는다. 리사이클러뷰는 를이용해서 수직 스크롤 이외에도 수평 스크롤 지원, 다양한 형태의 리스트들 지원한다. 리사이클러뷰의 뷰홀더 생성과 재사용 1. 스크롤을 내리면 RecyclerView는 스크롤 알림을 Layout Manager에게 보냅니다. 2. Layout Manager는 몇 번째 위치에 새로운 itemview가 배치되어야 하는지를 계산하고 해당 위치를 다시 RecyclerView에게 보냅니다. 3. RecyclerView는 캐시에서 해당위치를 가진 아이템 뷰를 가져오는데 만약 캐시에 해당 아이..
Support Library, Android x두 라이브러리의 공통점은 하위 api 버전에 대해서도 호환성을 유지시켜준다.Support Library는 v4, v7,v13 은 api 버전이 해당 숫자 이상이 되어야 한다는 의미이며, 대부분 min 19를 사용하면서 해당 버전을 명시하는 것은 의미가 없어졌다. 버전이 혼잡해질수록 호환성 문제가 발생했고 또한 Support library는 단일 라이브러리이므로 불 필요한 라이브러리도 포함되어 dex파일의 크기가 증가한다. 다양한 버전을 통합하고 자체적으로 관리하는 새로운 네임스페이스 Api 레벨 28부터 androidx를 구성. Appacompatactivity 란?특정 버전 이하 기기에서 뷰 호환성을 유지한다. 어떻게 Appcompatactivity는..

Apk 빌드 과정 1. 안드로이드의 리소스 파일들을 코드레벨에서 구분하기 위해서 aapt는 R.java를 만든다. 2. R.java와 작성한 코드들 그리고 aidl에 의해서 만들어진 자바 인터페이스들은 자바 또는 코틀린 컴파일러에 의해서 클래스파일로 컴파일된다. 3. 클래스 파일들과 3rd party 라이브러리들은 그 후 art 가상머신에서 실행하기 위해서 dex파일로 만들어진다. 4. dex파일은 컴파일된 리소소들, 다른 리소스들이 합쳐져서 apk가 만들어지는데 해당 apk를 키스토어로 서명한다. 5. 또 이 apk를 적은 메모리를 사용할 수 있게 하는 zipalign을 통해 최종 apk를 만들어낸다. *zipalign: 보관 파일 중 압축되지 않은 모든 파일이 파일 시작 부분을 기준으로 정렬되도록 하..
Setcontentview inflate 하는 과정을 거친다. 리소스 id에 해당하는 파일의 xml의 내용을 파싱하고 xml의 구조에 따라 뷰 그룹 객체와 뷰의 객체를 생성하고 그들의 관계를 추가하고 메모리에 적재한다. 내부적으로 layoutinflater를 사용한다. layoutinflater Xml에 있는 리소스를 실제 메모리에 올려준다. setcontentview() 를 통해 인플레이트 할 수 있지만 동적으로 뷰 객체를 가져와야하는 경우 LayoutInflater를 사용한다. 예를들어 리사이클러뷰에서 아이템뷰를 만들때 또는 커스텀 뷰를 만들때, 프래그먼트를 사용할때 따로 layoutinflater를 사용해서 inflate 하게된다. 메모리에 올리는 시점이 불명확해서 동적으로 인플레이트 하는경우 사용..
Pendingintent pending은 ‘보류’ 라는 의미를 가진다. Pendingintent는 당장 실행하지 않고 실행하기 위해 보류되어있는 인텐트이다. 사용자가 해당 앱을 실행하지 않는 상황에서는 해당 앱의 intent를 실행 시킬수 없다. 예를들어, 1.어떤 파일을 다운로드를 완료해서 노티피케이션을 통해 intent를 실행 시켜야할때 2.특정 시간 마다 해당 앱을 실행 시키지 않아도 intent를 실행 시켜야할때 프로세스가 해당 앱을 점유중이 아니더라도 해당 앱의 intent를 실행시킬 필요가 생긴다. pendingintent는 다른 앱에게 인텐트를 실행 시킬 권한을 허가해 실행을 시킨다. * 노티피케이션은 안드로이드 시스템의 NotificationManager가 다른 프로세스에서 intent를 ..

뷰는 어떻게 그려질까? 액티비티는 focus를 받으면 레이아웃을 그리도록 요청한다. 그러면 view tree의 루트노드부터 순회하면서 차례대로 뷰를 그리게 된다.(Android 프레임워크는 레이아웃 그릴 수 있게 하지만 액티비티에서 따로 Root node를 제공해줘야 한다.) view는 자체적으로 생명주기를 가지고 있고 뷰 그룹이 하위 요소들을 그리도록 요청한다. 측정단계와 레이아웃단계를 통해 그려진다. 1.Measure 뷰의 크기를 측정한다. 실제 뷰의 크기를 측정하기 위해 onMeasure()를 호출한다. 부모 뷰와 자식 뷰 간의 크기를 측정하기 위해 아래 클래스들을 사용한다. A. ViewGrop.LayoutParams 자식뷰가 부모뷰에게 자신이 어떻게 측정되는지 요청할때 해당 클래스 사용. B.V..