일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 빌드 과정
- 물리 메모리
- appcompatacitivity
- NestedScrollView
- AsyncListDiffer
- 디자인 패턴
- 프로세스
- appcompatactivity
- recyclerview
- flutter
- Dispatchers
- 안드로이드
- viewModelScope
- Android
- GetX
- 리사이클러뷰
- AAC
- http 역사
- http발전과정
- Kotlin
- 리사이클러뷰풀
- DiffUtil
- Today
- Total
목록전체 글 (77)
hong's android

만약 앱이 아무런 메시지도 없이 죽어버리거나, 흰 화면이 나타난다면 사용자 경험이 낮아지고, 앱 이탈률도 높아질 것이라고 생각합니다. 어떻게 사용자에게 오류 메시지를 명확히 전달하고, 재시도를 유도할 수 있을까요? 그리고 개발자는 오류를 빠르게 디버깅, 수정해서 어떻게 안정적인 서비스를 운영할 수 있을지 생각하며 개선했던 경험을 작성해보려고 합니다. 먼저, 앱에서 발생할 수 있는 오류는 크게 세 가지로 수 있었습니다. 1. 시스템 논리 오류 이 오류는 프로그램의 내부 로직에서 발생하는 오류로, 예기치 않은 흐름에 의해 RunTimeException과 같은 예외가 발생할 때 주로 나타납니다. 이러한 오류는 사용자가 일반적으로 트리거하지 않지만, 발생 시 앱이 예상대로 동작하지 않아 기능이 중단될 수 있습..

HTTP란?HTTP(하이퍼텍스트 전송 프로토콜)은 웹 페이지, 텍스트, 이미지, 미디어, 바이너리 파일과 같은 다양한 콘텐츠 전송을 가능하게 하는 애플리케이션 계층 프로토콜입니다. HTTP/1.0Http/1.0은 전송 제어 프로토콜 (TCP) 기반으로 연결되며, 각 요청이 별도의 TCP 연결을 통해 생성됩니다. 각 요청마다 TCP 연결을 해야 하므로 비효율적이고, 레이턴시를 증가시킵니다. 또한, TCP는 slow-start 기반으로 작동하기 때문에 많은 TCP 연결이 추가될수록 오버헤드가 발생합니다. HTTP/1.1 - 단일 TCP 연결에서 다수의 요청과 응답 전송 Http/1.0의 문제를 해결하기 위해 HTTP/1.1은 연결 유지(Keep-Alive) 메커니즘을 도입했습니다. 이 메커니즘은 “Con..

플러터로 앱을 개발하기 전 학습했던 내용들에 대해 공유해보고자 합니다. Flutter? Flutter가 iOS와 Android와 같은 서로 다른 운영 체제(OS)에서 동일한 코드를 재사용하여 앱을 개발할 수 있도록 설계된 “UI 툴킷”이다. 공식문서에선 “UI 툴킷”이라는 표현을 사용했다. UI툴킷은 사용자 인터페이스(UI)를 설계하고 렌더링 하는 데 필요한 도구와 라이브러리의 집합이다. 그러므로 플러터는 좀 더 UI를 설계하고 개발하는데 초점을 맞춘 프레임워크라는 생각이 든다. 쉽게 말하면, Flutter는 화면을 어떻게 그릴지, 그리고 UI를 어떻게 더 효율적으로 관리할지를 고민하는 데 최적화된 프레임워크라고 볼 수 있을 것 같다. 그래서 OS와 관련된 기능들은 플러그인을 사용하거나, 네이티브 코..

프로젝트의 홈 화면 입니다. 리사이클러뷰들이 모두 같은 뷰 타입의 아이템들을 가지고 있습니다.문제현재 홈 화면의 리사이클러뷰들은 같은 뷰 타입의 아이템을 가지고 있지만 각각 뷰풀을 소유하고 있습니다. 이 때문에 스크롤을 내릴수록 뷰를 재사용 하지않고 새로운 뷰를 인플레이트를 하게 됩니다.리사이클러뷰는 인플레이트를 통해 뷰를 생성하는데 이때 메인 스레드를 사용합니다. 만약 다른 애니메이션, 하단에 시리즈 아이템들이 많이 모여있는 카테고리들이 추가된다면 렌더링을 담당하는 메인 스레드에 비교적 많은 부담을 주게 됩니다.이는 스크롤 버벅거림이나 사용자 경험에 직접적인 연결이 되어있는 부분이기에 개선하고자 했습니다.리사이클러뷰 원리출처 : Microsoft1.저장리사이클러뷰는 스크롤을 할 때 캐시에 뷰(Scrap..

문제앱을 실행할 때마다 홈 화면의 모든 시리즈 데이터들을 매번 서버에 요청해야 하므로 로딩 시간이 소요됩니다. 그리고 모든 시리즈 데이터들에 썸네일 URL 추가하는 데이터 가공 작업을 매번 거쳐야 했습니다.이러한 과정들로 인해 로딩 시간이 길어진다면 이는 사용성에 불편함을 준다고 생각해 해당 문제를 개선하고자 했습니다.해결💡 어떻게 로딩 시간을 줄여야할까?가공이 완료된 데이터들은 로컬에 캐시하고 이후엔 새롭게 추가된 데이터들만 서버에게 요청합니다. 그 후 해당 데이터들만 가공하고 로컬에 추가하는 것이 매번 불필요하게 반복되는 작업을 피하기 때문에 효율적이라고 생각했습니다.첫 로딩 시 로컬에 데이터가 없을경우 시리즈 데이터들을 전부 초기화해주는 로직을 실행하고, 만약 로컬에 데이터가 존재할 경우 로딩이 ..

템플릿 메소드 패턴(Template Method Pattern) 알고리즘의 골격을 정의한다. 즉 일련의 단계로 알고리즘을 정의한 것이다. AbstractClass는 템플릿 메소드 들어가 있고, abstract 메소드로 구체적인 구현을 서브클래스에게 요구한다. ConcreteClass는 여러개가 있을 수 있고, 구체적인 구현을 제공해야 한다. 템플릿 메소드는 위 메소드로 알고리즘을 구성한다. 공통적으로 제공해야 하는 구상 메소드는 final로 AbstractClass에서 제공한다. 여러 클래스들에서 공통적으로 제공해야하는 알고리즘이 생기면 코드는 중복될 수 있다. 알고리즘이 바뀌면 모든 클래스의 코드를 변경해야 하고, 공통적인 알고리즘을 제공하는 새로운 클래스를 추가하려면 많은 작업을 해야 한다. Abst..