본문 바로가기

안드로이드/Android18

[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.
[Android] 빌드, MultiDex 빌드개발자가 소스 코드를 작성 후 앱 설치 파일 APK 를 만들기까지의 실행 과정 리눅스에서의 빌드소스 코드를 컴퓨터가 읽을 수 있는 기계어로 번역(*컴파일)하고, 내가 만든 소스 코드에서 사용하는 라이브러리와 연결해서 최종 실행 파일 형태로 만드는 것컴파일(Compile) : 사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계어로 변환해 주는 과정 JVM 에서의 빌드JVM(Java Virtual Machine) : 자바는 OS 에 종속적이지 않다는 특징을 가지고 있다. OS 에 종속받지 않고 실행되기 위해서는 OS 위에서 자바를 실행할 수 있는 환경이 필요하다. JVM 은 자바 *바이트코드를 운영체제에 종속되지 않고 실행할 수 있도록 해주는 역할을 한다.바이트코드(Bytecod.. 2024. 11. 30.
[Android] 이미지 최적화(로드 개선) 해상도화면 또는 인쇄 등에서 이미지의 정밀도를 나타내는 지표이미지를 표현하는 데 몇 개의 픽셀 또는 도트로 나타냈는지 그 정도를 나타내는 말이다.즉, 해상도가 높다는 말은 1인치 당 찍게 되는 점의 수가 많기 때문에 선명하다는 것이다.점의 개수가 많아진다는 것은 메모리가 더 필요하고 처리 과정이 느려질 수 있다는 것이기 때문에, 적절한 해상도를 사용해야 한다. 문제점이미지는 일반적인 애플리케이션 UI 에 비해 크기가 크다.더 높은 해상도의 이미지는 특별한 이점 없이 메모리를 더 많이 차지하며 즉시 추가로 확장해야 하는 부가적인 성능 오버헤드가 발생한다.예시) 시스템 갤러리 애플리케이션은 Android 기기의 카메라를 사용하여 촬영한 사진을 표시하는데 일반적으로 이러한 사진은 기기의 화면 밀도보다 해상도가.. 2024. 11. 12.
[Android] Image Loader Library Android Memory안드로이드는 앱 내에서 사용할 수 있는 힙 메모리가 정해져 있기 때문에 이미지 로더 라이브러리를 사용하지 않은 상태에서 많은 이미지를 사용하거나 고해상도 이미지를 이미지뷰에 로드해야 하는 경우 메모리 부족으로 OOM(Out Of Memory)이 발생하게 된다.즉, 안드로이드 애플리케이션은 프로세스당 메모리 사용량에 제한이 있다. Honeycomb 미만Dalvik heap 영역 : Java 객체를 저장하는 메모리External 영역 : Native heap 의 일종으로 네이티브의 비트맵 객체를 저장하는 메모리Dalvik heap 영역과 External 영역은 각각 프로세스당 메모리 한계까지 확장될 수 있다.Dalvik heap 영역과 External 영역의 Dalvik heap f.. 2024. 11. 11.
[Android] Memory Cache와 Disk Cache Memory vs DiskMemory 는 컴퓨터 내부에서 현재 CPU 가 처리하고 있는 내용을 저장하고 있는 휘발성 장치로, 처리 속도가 빠르다.Disk 는 Memory 보다는 느리지만, 많은 양의 데이터를 전원이 꺼져도 사라지지 않고 영구적으로 보관할 수 있는 장치이다. [CS] CPU, 주기억장치(ROM, RAM(SRAM, DRAM), 보조기억장치(HDD, SDD)중앙 처리 장치 (Central Processing Unit, CPU)컴퓨터의 중앙에서 모든 데이터의 처리를 담당하는 장치, 컴퓨터의 두뇌컴퓨터의 속도는 CPU 의 성능이 가장 큰 영향을 미친다. 컴퓨터는 사용자의 명령을dev-baik.tistory.comMemory Cache애플리케이션 내에 존재하는 메모리에 비트맵을 캐싱하고, 필요할 때.. 2024. 11. 8.