Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

기어가는 피카츄

Application Context(애플리케이션 컨텍스트)를 사용하는 이유 본문

아니드로이드

Application Context(애플리케이션 컨텍스트)를 사용하는 이유

pikachu1259 2019. 8. 16. 16:19

Activity가 하나라도 존재하면 안드로이드는 Application 객체도 하나 생성한다.

Application 객체는 Activity 객체의 생성 소멸과 관계없이 여전히 존재하며 Activity보다 생애가 길다.

 

특정 객체를 싱글톤으로 생성하게 되면, 싱글톤 객체는 Application객체 전체 프로세스가 소멸되기 전까지는 

일단 한번 생성되고 나면 소멸되지 않는다.

 

예를 들어 Database객체를 싱글톤으로 생성하는 이유는 Application 어디서든 같은 Database객체로 유지하려고 하는 목적이 있기 때문이다. Database에서 객체 참조를 유지하는 Context가 '특정 Activity'라면, Database가 싱글톤이기 때문에 한번 참조되고 나면 Database객체가 소멸되기 전까지는 계속 참조상태를 유지한다. 생성-소멸을 반복해야 하는 Activity가 Application이 종료될 때까지 계속 Database에 의해 (강제로) 참조 상태를 유지하기 때문에 Garbage Collector가 회수를 해갈 수가 없다. 그렇기 때문에 (소멸되지 못하기 때문에) 메모리 관점에서는 낭비인 것이다. 

그러나 Database객체 내부에서 Activity대신 Application이 Context로 사용된다면, Database 입장에서는 생성-소멸 상관없이 특정 Context인 Application을 프로세스 종료 직전까지 일정하게 참조 유지할 수 있다. 이로써 메모리 문제를 신경쓸 필요가 없게 된다. 

Comments