본문 바로가기

Android/Android 기초21

[Android] 안드로이드의 Window에 대한 이해 Android Window보통 , Activity 화면에서 status bar, navigation bar 그리고 사용자 view 3가지를 보여준다. 각각 component 들은 서로 다른 window를 가지고 있다. status bar 를 위한 window ( battery, rssi, time 표시 .. ) , navigation bar 를 위한 window ( 햄버거 아이콘, back btn, menu button 등 ) 등 이 모든 window를 WindowManager에 의해서 제어되고 있다. Window란?Window는 뭔가를 그려낼 수 있는 화면이다. 기본적으로 액티비티 단위 마다 각자의 WindowManager를 가지고 있고, WindowManager에 의해 Window들이 관리 된다.액티.. 2025. 1. 9.
[Android] 태스크 (Task)와 백 스택(Back Stack) 태스크 (Task)태스크는 액티비티 스택에 대한 메타 데이터와 여러 정보의 콜렉션이다. 앱의 런처 아이콘을 클릭하면 안드로이드 시스템에서 실제로 수행하는 일은 재개(resume)할 이전의 기존 작업을 찾는 것이다. 만약 어느 태스크도 찾디 못했다면 새로 시작된 액티비티를 태스크의 백스택 루트 액티비티로 설정하여 새로운 태스크가 생성된다. 백 스택 (Back Stack)먼저 안드로이드에서 Stack은 액티비티가 순서대로 저장되어 관리되는 공간을 의미한다.뒤로가기를 누를 경우 최상단의 액티비티를 제거(pop)한다.혹은 startActivity()를 통해 새로운 Activity를 최상단에 추가하여 새 Activity가 기존의 최상단 Acitivity를 가릴 경우 기존 액티비티는 일시 중지된다. 태스크 (Tas.. 2024. 12. 18.
[Android] 왜 Activity 대신 Fragment를 사용해야할까? 유연한 UX/UI 구현태블릿과 같은 큰화면에서 UX/UI를 역동적이고 유연하게 구현할 수 있다.따라서 복잡한 화면 구성에 있어 Fragment를 자주 사용한다. 재사용성 증가View 또는 비즈니스 로직을 Fragment 단위로 분리할 수 있다.아키텍처 원칙에서 가장 중요한 원칙인 관심사 분리를 통해 의존성을 분리하고 독립성을 키우게 되는 것이다.이러한 부분을 잘 이용하면 Fragment로 구현한 내용을 다른 Activity 또는 Fragment에서 재사용할 수 있다. 퍼포먼스Acivitiy는 무겁다. 왜 무거운 것일까? Actiivity의 경우 항상 시스템이 개입하며, 새로운 Acitivity의 생성, 전환, 소멸 등의 과정은 상호작용하는 Acitivity를 직접적으로 참조하지 않고 Intent와 Sys.. 2024. 12. 16.
[Android] Fragment Manager Fragment 이동 처리 관련해서는 Jetpack의 Navigation Component를 쓰고 있지만, FragmentMananger의 동작 과정에 대해서 잘 이해하고 있지 못한 것 같아 포스팅을 해본다. FragmentManagerFragmentManager는 앱 프래그먼트에서 프래그먼트를 추가, 삭제, 교체하고 백스택에 추가하는 작업을 실행하는 클래스이다.Activity 또는 Fragment에서 엑세스 할 수 있으며, FragmentActivity 및 서브 클래스에서 접근이 가능하다.getSupportFragmentManager(), childFragmentManager(), parentFragmentManager() FragmentManager 접근Activity에서 접근 방법FragmentaA.. 2024. 12. 16.
[Android] Theme vs Style Theme != Stylethemes 와 styles 둘 다   아래에서 보듯이 style의 각 key는 layout 에서 설정할 수 있는 attribute들입니다. 이것들을 style 로 추출하면 여러 view 에서 쉽게 재사용할 수 있고, 유지보수도 용이합니다. UsageStyles 은 layout의 각 view 에서 사용될 수 있습니다. View 는 하나의 style만 적용합니다. - 웹에서 css 가 여러 class들을 적용할 수 있는 것과 대조됩니다. Scopeview 에 적용된 style 은 바로 그 view 에만 적용되고, 자식들에게는 적용되지 않습니다. 예를 들어 3개의 버튼을 가진 ViewGroup이 있을 때, InlineAction style을 ViewGroup에 적용하더라도 자식 버튼.. 2024. 10. 27.
[Android] 메모리 누수 & 분석 메모리 누수란모든 앱은 작업을 수행하기 위한 리소스로 메모리가 필요합니다. 각 앱에 충분한 메모리가 존재하도록 안드로이드 시스템은 메모리 할당을 효율적으로 관리해야 합니다. 이를 위해서 런타임시(실행시) 메모리가 부족하다면 안드로이드에서는 가비지 컬렉터(Garbage Collection = GC)를 트리거합니다. GC의 목적은 더 이상 유용하지 않은(사용되지 않는) 객체를 정리하여 메모리를 회수하는 것입니다. GC는 다음과 같은 3단계로 과정이 이루어 집니다.GC 루트에서 메모리의 모든 객체를 탐색하고 현재 참조가 되고 있는 객체는 활성화된 객체로 표시합니다.활성화가 표시 되지 않은 객체(참조되지 않는 객체)를 메모리에서 지웁니다.남은 객체들은 다시 정렬합니다.즉, 요약하자면 사용자에게 제공되는 모든 것.. 2024. 6. 3.