본문 바로가기

안드로이드/Android22

[Android] JobScheduler, WorkManager https://medium.com/huawei-developers/jobscheduler-in-android-3b269e3a4e49 JobScheduler in AndroidJobScheduler is a system service that allows you to schedule tasks or jobs to be executed in the background.medium.comJobScheduler백그라운드에서 실행될 작업을 예약할 수 있는 시스템 서비스유사한 작업을 그룹화하고 함께 실행하여 시스템 리소스와 배터리 수명을 관리하도록 설계되었다.즉각적인 사용자 상호작용이 필요하지 않고 더 적절한 시간으로 연기할 수 있는 작업을 수행하는 데 유용하다.주요 구성 요소JobScheduler : 작업을 예약.. 2025. 4. 29.
[Android] Service https://developer.android.com/develop/background-work/services?hl=ko 서비스 개요 | Background work | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 서비스 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Service는 백그라운드에서 장기 실행 작업developer.android.comService사용자에게 인터페이스를 제공하지 않고 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소다른 애플리케이션 구성 요소가 서비스를 시작할 수 있고, 다른 앱을 전환하더라도 백그라운드에서 계속 실행된다.앱 구성요소와 서비스.. 2025. 4. 27.
[Android] MVI MVI모델, 뷰, 인텐트의 3가지 컴포넌트를 사용하는 아키텍처 패턴양방향 데이터 흐름이 가능한 MVVM 과 달리, 단방향 데이터 흐름 형태로 데이터가 이동한다.MVVM 패턴은 충분히 이상적인 패턴이지만, 화면에 대한 요구사항이 커지고 상태가 늘어남에 따라 복잡한 데이터 흐름, 상태 충돌, 스레드 안전성이란 문제에 대해 한계가 존재한다.MVVM 패턴은 데이터 바인딩으로 뷰가 데이터를 구독할 수 있지만 뷰 안에서 스스로 바인딩하는 경우가 있고, 뷰와 뷰모델 간의 핑퐁으로 로직을 처리하면 복잡한 데이터 흐름으로 파악하기 힘들 때도 있다.즉, 뷰와 뷰모델의 양방향 참조가 가능해 생기는 문제가 있다.데이터 흐름을 제어하지 못하는 게 문제였기 때문에, MVI 는 단일 상태 관리, 단방향 데이터 흐름을 통해 MVVM.. 2025. 1. 26.
[Android] Clean Architecture 소프트웨어 개발은 복잡한 문제를 해결하기 위해 코드를 작성하는 것 이상을 필요하다. 단순히 결과론으로 화면을 보여주는 것만 생각하고 개발한다면, 코드는 점차 커지며 나중에는 손볼 수 없을 정도로 난폭한(?) 코드로 변하게 된다.그렇기에 개발한다는 것은 유지보수성, 확장성, 테스트 용이성 등의 요구 사항을 충족하기 위한 고민이 필요하며, 적절한 아키텍처 설계가 필수이다. Android Clean ArchitecturePresentation(UI) Layer, Domain Layer, Data Layer 총 3가지 레이어로 구성되어 있다.각 레이어들은 *단방향 데이터 흐름으로 통신한다.단방향 데이터 흐름 : 데이터가 오로지 한 방향으로만 흐르는 것으로 *Up Stream 과 *Down Stream 방식으로 .. 2025. 1. 22.
[Android] LiveData, Flow LiveDataLifecycle 라이브러리 중 하나로, 안드로이드 공통의 라이프사이클과 관련된 문제를 해결할 수 있게 해 주면서 앱 개발시 보다 더 유지보수하기 쉽게, 테스트하기 쉽게 만들어주는 라이브러리옵저버 패턴을 활용하여 구현되었으며, 관찰 가능한 일반 클래스인 ObservableXXX 클래스와는 달리 LiveData 는 생명주기의 변화를 인식하는 데이터 홀더 클래스이다.즉, Activity, Fragment, Service 등 안드로이드 컴포넌트의 생명 주기 인식을 통해 Active 상태에 있는 컴포넌트에서만 업데이트한다.Activity 와 Fragment 는 LiveData 객체를 안전하게 관찰할 수 있고, 생명 주기가 끝나는 즉시 관찰을 멈추기 때문에 누수를 걱정하지 않아도 된다.LiveDat.. 2024. 12. 22.
[Android] 프로그램(Program), 프로세스(Process), 스레드(Thread) 프로그램 (Program, 정적 프로그램(Static Program))윈도우의 *.exe 파일이나 Mac 의 *.dmg 파일과 같은 컴퓨터에서 실행할 수 있는 파일어떤 작업을 하기 위해 실행할 수 있는 파일. 아직 실행하지 않은 상태이기 때문에 정적 프로그램으로도 불린다.파일이 저장 장치에 있지만 메모리에는 올라가 있지 않은 정적인 상태모든 프로그램은 *운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다.운영체제(Operating System, OS) : 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하는 역할을 한다. 프로세스(Process)운영체제로부터 자원을 할당받은 작업의 단위프로그램을 실행시켜 정적인 프로그램이 동적으로 변하여 프.. 2024. 12. 11.
[CS] 응집도(Cohesion)와 결합도(Coupling) 모듈(Module)크기와 상관없이 클래스나 패키지, 라이브러리 등 프로그램을 구성하는 임의의 요소프로그램을 구성하는 시스템을 기능 단위로 독립적인 부분으로 분리한 것단순히 규모가 큰 것을 작게 여러 개로 나눈 조각이 아니라, 하나 이상의 논리적인 기능을 수행하기 위한 명령어들의 집합 응집도(Cohesion)모듈에 포함된 내부 요소들이 하나의 책임/ 목적을 위해 연결되어 있는 연관된 정도응집도가 높으면, 변경 대상과 범위가 명확해지는 장점이 있어서 코드를 수정하기 쉬워진다.높은 응집도 : A 모듈 안에 a 라는 기능을 위해 모여있고 긴밀하게 연결되어 협력하고 있다.낮은 응집도 : A 모듈이 아닌 곳에 a 기능들이 흩어져 있다던가 또는 A 모듈에 a 기능 외에 b, c, d 기능들도 섞여서 복잡하게 구현되어.. 2024. 12. 8.