🤖 Compose

[Android / Compose] Compose Context

콩드로이드 2025. 5. 11. 14:52

까먹기 전에 줍줍..


🎯 XML vs Compose의 "생명주기 + context" 구조 차이

 

 XML 기반

  • Activity나 Fragment가 View를 직접 소유
  • View는 Activity가 죽을 때  context도 같이 정리됨 → context를 View 내부에서 써도 큰 문제가 없다 
  • 즉, UI는 생명주기를 따라감

 Compose 기반

  • UI 자체가 "함수로 구성된 상태 기반 UI"
  • 상태에 따라 UI가 수시로 재구성(recomposition) 되기에 Activity와 느슨하게 연결됨
  • 그래서 UI 함수 내에서 context를 막 쓰면, 그 시점에 context가 유효하지 않을 수 있음
 

XML :  context가 항상 Activity와 뷰 안에 있고, 생명주기를 같이 가져가니까 자유롭게 써도 괜찮았지만,
Compose : UI 함수들이 Activity 생명주기와 독립적으로 돌아가기도 하니까, context를 직접 관리하지 않으면 위험

 


 

 

✅ 그래서 context는 명시적으로 전달해야 한다!

@Composable
fun MyComposable(context: Context) { ... }

:  이 함수가 context가 꼭 필요한 걸 명확히 드러낼 수 있음

호출 시점에서도 context를 보장된 상태에서 넘기게 되니까 → 버그 줄고, 메모리 릭 위험도 줄고, 테스트도 쉬워짐

 

 

⚠️  잊지말자

Compose는 함수형 UI는 예측 불가능한 시점에 다시 실행될 수 있다

예를 들어 context를 갖고 있던 composable 함수가 ViewModel의 상태 변화로 인해 다시 실행되었는데 →  앱이 크래시 나거나, 이상한 동작 발생  ,,

 


compose하다보면 Recomposition이 굉장히 중요한데, 이렇게 context같은 부분을 빼먹지않도록 유념해야한다,, 

'🤖 Compose' 카테고리의 다른 글

[Compose] LazyColumn 성능을 위해  (0) 2025.05.13
[Compose] 의존성 주입 (Dependency Injection) (ft.hilt)  (0) 2025.02.11
[Compose] 안정성 stability  (0) 2025.02.09
[Compose] Rendering  (0) 2025.01.31
[Compose] Compose의 LifeCycle  (0) 2025.01.27