Android 30

[Android] Paging3의 PagingSource, PagingConfig와의 관계

목록형 UI를 구현할 때 개발자는 고려해야 할 것이 있다.만약 목록의 모든 데이터를 가져와 보여주려고 한다면 해당 페이지를 보여줄 때 엄청나게 많은 부하와 로딩 시간이 필요할 것이다. 그래서 개발자가 사용하는 기법은 사용자한테 보여주는 데이터 일부만을 가져와 부분 부분 보여주는 기법인데,컴퓨터에서 크롬과 같은 웹 페이지에서 1페이지 2페이지로 넘어가는 것과는 다르게 모바일에서는 폰을 그대로 스크롤하며 주르륵 뜨는 UX를 많이 경험했을 것이다. Paging 라이브러리는 로컬 저장소에서나 네트워크를 통해 대규모 데이터 세트의 데이터 페이지를 로드하고 표시할 수 있고, 앱에서 네트워크 대역폭과 시스템 리소스를 모두 더 효율적으로 사용할 수 있도록 구현된 라이브러리이다.Paging 라이브러리의 이점은 다음과 같..

Android/학습 2025.03.29

[Android] Fragment Manager, Basic 편

일반적으로 운영 애플리케이션 담당 업무를 하게 되면,페이지 이동 같은 작업은 기존에 설계되어 있는 방식 따르면 되었기 때문에이 부분에 대해 신경을 잘 쓰지 않게 되었고, 따로 공부할 계기 및 우선순위가 계속 늦춰지고 있었다. 하지만, 처음부터 완벽하게 만들어지면 좋겠지만 그렇지 않은 경우는 늘 존재하고우리 프로젝트도 이 부분에 대한버그 픽스와 리펙토링이라는 큰 백로그가 만들어지게 되었다. 현재 프로젝트에서는 FragmentManager를 관리하여 페이지 이동을 담당하는 Object Class가 존재하였고 엄연히 Activity의 생명주기에 의존적일 수밖에 없는 FragmentManager를 Object로 어디서든 접근하여 안전장치 없이 사용되는 로직은 실제로 운영에서도 Exception을 많이 일으키고 ..

Android/학습 2025.02.16

[Kotlin] StringBuilder (String 메모리 저장 방식과 StringBuffer를 곁들인..)

StringBuilder는 변경가능한 문자열을 다루기 위한 객체인데,우선 StringBuilder에 대해 알아보기 전에, Kotlin에서 String의 메모리 저장 방식에 대해 알아보자. String은 참조형 객체로 Stack과 Heap 메모리를 이용하여 값을 가져온다.기본형 자료형이 Stack에 저장되는 것과 달리 Heap 메모리를 추가적으로 사용더보기참조형 객체는 변수에 객체에 실제 값을 저장하는 것이 아닌 값이 있는 주소값을 저장한다. 아차차, 참고적으로Kotlin은 모든 자료형이 참조형 자료형이다!! 그렇기 때문에 그림에서 num: Int도 사실 st1: String처럼 참조형으로 연결되어야 한다.차이를 비교하려고 저렇게 작성했으나 저 그림은 엄밀히 따지자면 맞지 않는 그림이다. Java의 int..

Android/학습 2024.12.12

[일상] 2025 안드로이드 탐구 영역 - 2025학년도 개발능력시험 문제지 안드로이드탐구 영역

며칠 기다리던 우편이 있었다.그것은 바로바로 2025학년도 개발능력시험 문제지안드로이드 탐구 영역  GDG Korea Android에서 진행한 활동으로 수능, 모의고사 컨셉의 이벤트!5,900원의 응시료를 제출하고 참여할 수 있었다. 아니, 말차라떼 한번 안 먹는 돈으로 이런 이벤트?! 바로 진행시켜!   사실 자취하고 있는 곳이 근린생활시설이라, 우편함이 호실마다 있지 않고 층마다 있다.그래서 호옥시 우편물을 잃어버릴까 봐 조마조마했다.(지금도 주인을 알아볼 수 없는 우편물이 폭발 직전으로 꽂혀있다) 그런데 다행히 우편이 아닌 안전하게 택배로 배달되었다! 야호! 문자 메시지까지 발송 구성품안내문/준수사항 (총 2장)안드로이드탐구 영역 문제지 경우에 따라 사은품도 동봉되어 있다고 한다.운이 좋은 참여자는..

Android 2024.12.08

[Android] ViewModel Instance 생성 with ViewModelProvider

ViewModel은 생성될 때 전달받은 ViewModelStoreOwner 생애주기를 따라간다. https://androidhelper.tistory.com/23 [Android] Jetpack ViewModelViewModel비즈니스 로직 또는 화면 수준 상태 홀더로,UI 컨트롤러의 데이터를 캡슐화하여 구성 변경이 일어나도 데이터를 유지하는 것이 목적인 구성요소이다. 즉, UI에 상태를 노출하고 관련 비즈androidhelper.tistory.com 그렇다면 ViewModelStoreOwner 생애주기를 따르는 ViewModel의 생성하려면,즉, ViewModel의 인스턴스는 어떻게 해야 올바르게 생성해서 사용할 수 있을까? ViewModelProvider를 사용하는 방법 ViewModelProvide..

Android/학습 2024.11.28

[Android] Jetpack ViewModel

ViewModel비즈니스 로직 또는 화면 수준 상태 홀더로,UI 컨트롤러의 데이터를 캡슐화하여 구성 변경이 일어나도 데이터를 유지하는 것이 목적인 구성요소이다. 즉, UI에 상태를 노출하고 관련 비즈니스 로직을 캡슐화   ViewModel이 아닌 일반 Class로 UI를 상태를 관리하면 어떻까?이는 활동(Activity)이나 탐색 대상(Navigation destinations) 간에 이동할 때 문제가 될 수 있습니다. 이렇게 하면 인스턴스 상태 저장 메커니즘을 사용하여 데이터를 저장하지 않을 경우 해당 데이터가 소멸됩니다. 참고적으로, ViewModel은 Hilt 및 Navigation과 같은 주요 Jetpack 라이브러리와 Compose와의 통합을 완벽하게 지원   ViewModelStoreOwner..

Android/학습 2024.11.14

[Android] Bundle이란? (feat. Activity 간 데이터 전달에 Intent를 사용하는 이유)

BundleString key에 다양한 Parcelable 값으로 매핑key, value의 Map 형태의 데이터 구조 Parcelable와 Bundle는 IPC/바인더, 인텐트가 있는 활동 간 트랜젝션, 구성 변경 간에 일시적인 상태를 저장하는 것과 같이프로세스 경계를 ​​넘어 사용하도록 의도된 객체Parcel는 일반적인 직렬화 메커니즘이 아니며, Parcel를 디스크에 데이터를 저장하거나 네트워크를 통해 전송해서는 안 됩니다.  Bundle은 parcel을 사용하여 마샬링(marshalling) 및 언마샬링(unmarshalling)하는 데 매우 최적화되어 있습니다.  데이터를 저장하거나 전송할 목적으로 데이터 구조 또는 개체를 한 표현에서 다른 표현으로 변환하는 프로세스 마샬링(marshalling)..

Android/학습 2024.10.01

[CS] SOLID - 객체지향 설계의 원칙

약어개념 SSRPThe Single Responsibility Principle단일 책임 원칙A class should have one, and only one, reason to change.한 클래스는 하나의 책임만을 가져야 한다.OOCPThe Open Closed Principle개방-폐쇄 원칙You should be able to extend a classes behavior, without modifying it.소프트웨어 객체(클래스, 모듈, 함수 등)는 확장에 열려있어야 하고, 수정에 대해서는 닫혀 있어야 한다.LLSPThe Liskov Substitution Principle리스코프 치환 원칙Derived classes must be substitutable for their base cl..

Android/학습 2024.09.25

[CS] 객체지향 프로그래밍(OOP: Object-Oriented Programming)과 절차지향 프로그래밍(Procedural Programming)

객체지향 프로그래밍은프로그래밍 패러다임 중 하나로, OOP(Object-Oriented Programming)객체지향 프로그래밍객체(object)라는 개념을 중심으로 프로그램을 구조화하는 것 VS Procedural Programming절차지향 프로그래밍개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어 있는 것   OOP를 이야기할때 늘 단골로 나오는 절차지향 프로그래밍에 대한 이야기가 나온다.하지만, 절차지향 프로그래밍과 객체지향 프로그래밍 서로 반대되는 개념이라기보다는 절차지향 프로그래밍이 발전하여 객체지향 프로그램이라는 패러다임이 나온 것이라고 볼 수 있다.- 생활코딩  Procedural Programming ↔️ Object-Oriented Programming이와 같이 표현하지만 ..

Android/학습 2024.09.04

[Android] Android 권장 앱 아키텍처를 통해 보는 ViewModel과 Repository

아키텍처 원칙 앱 구성요소 : Activity, Fragment, Service, Content Provider, Broadcast Receiver 등 구성요소는 개별적이고 비순차적으로 실행될 수 있음. 운영체제나 사용자가 언제든지 앱 구성요소를 제거 가능. 애플리케이션 데이터나 상태를 저장 ❌ 서로 종속 ❌ Activity 및 Fragment 구현은 소유 대상이 아니며 Android OS와 앱 사이의 계약을 나타내도록 이어주는 클래스 OS는 사용자 상호작용을 기반으로 또는 메모리 부족과 같은 시스템 조건으로 인해 언제든지 클래스를 제거 가능 권장 앱 아키텍처 UI 레이어 : 화면에 애플리케이션 데이터를 표시 데이터 레이어 : 앱의 비즈니스 로직을 포함하고 애플리케이션 데이터를 노출 UI와 데이터 레이어..

Android/학습 2022.09.18