(1) Application Class 란?
1) Application Class 는 어느 컴포넌트( Activity, Service, Intent 등 )에서나 공유할 수 있는 전역 Class 를
의미합니다. Application 을 상속받은 Class 는 공동으로 관리해야 하는 데이터를 작성하기에 적합합니다.
2) Class 를 만들고 Application Class 를 상속한 뒤, 매니페스트의 application 태그안에 android:name 속성에
Class 의 이름을 등록해서 사용합니다.
3) Application 을 상속받은 Class 는 첫번째 Activity 보다 먼저 인스턴스화 됩니다.
4) 이렇게 애플리케이션에서 공통되게 사용되는 Application 의 자원들은 어디서든 Context 를 이용해서
접근이 가능합니다.
(2) Application 의 활용
1) Application Class 에서 static 으로 선언한 전역변수는 언제 어디서나 접근, 수정이 가능합니다.
2) Application Class 에 작성된 메서드는 언제 어디서나 호출이 가능합니다.
ex) 사용할 때는 getApplicationContext() 메서드를 이용해서 인스턴스를
받아오면 그 인스턴스로 자원에 접근할 수 있습니다.
( 강제 형변환 해줘야 합니다.
어플리케이션_클래스_이름 변수명 = (어플리케이션_클래스_이름)getApplicationContext() )
3) BroadCastReceiver 에서 접근할때는 onReceive() 메서드를 통해 들어온 context 를 이용해서
context.getApplicationContext() 이렇게 인스턴스를 가져올 수 있습니다.
4) ContentProvider 에서 접근할때는 getContext().getApplicationContext() 이렇게 접근할 수 있습니다.
(3) Application Class 사용시 주의점
1) 잘못 사용하면 메모리 누수가 발생할 수 있습니다.
2) 앱의 생명주기에 종속되어 있으므로, 함부로 사용하면 안됩니다.
3) 현재 컨텍스트의 생명주기를 넘어서는 범위에서 컨텍스트가 필요한 경우에만 사용합니다.
4) 라이브러리 초기화 혹은 싱글톤 객체에 컨텍스트를 전달하는 경우 등에 사용합니다.
참고자료:
https://onlyfor-me-blog.tistory.com/374
https://arabiannight.tistory.com/316
'Android' 카테고리의 다른 글
Android 08. Garbage Collection(가비지 컬렉션) (0) | 2022.06.07 |
---|---|
Android 07. Android Open Source License 종류 (0) | 2022.06.03 |
Android 06. Platform Architecture(플랫폼 아키텍처) (0) | 2022.05.30 |
Android 05. 동기(Synchronous) & 비동기(Asynchronous) (0) | 2022.05.26 |
Android 04. 안드로이드의 가상머신은? (0) | 2022.05.19 |