[안드로이드 Hilt 3] - Context 주입

이영준·2023년 7월 10일
0

안드로이드_Hilt

목록 보기
3/5

Context 주입

많은 경우에서 클래스의 매개변수로 그 클래스를 부르는 액티비티, 혹은 애플리케이션의 context를 사용해야 될 때가 있다.

하지만 서로 다른 액티비티에서 하나의 클래스를 hilt를 통해서 부른다면 그 클래스가 매개변수로 가지는 context도 달라져야 할 것이기 때문에 context도 주입을 하면 좋을 것 같다.
다행히 context 역시 주입을 할 수 있다!!
대표적으로 applicationContext와 activityContext를 쓰게 되는데, 각각의 애너테이션이
@ApplicationContext , @ActivityContext로 모두 있다.

context 주입 예시

class DatabaseAdapter @Inject constructor(
    @ActivityContext private val context: Context, var databaseService: DatabaseService
) {

    fun log(message: String) {
        Log.d(TAG, "log: DatabaseAdapter message : $message")
        databaseService.log(message)
        Log.d(TAG, "log: context available ${context}")
    }

}

위 처럼 adapter를 만들어 구성하면, 이 adapter를 부르는 액티비티의 context를 자동으로 쓸 수 있게 해준다.

@Inject
    lateinit var databaseAdapter : DatabaseAdapter
    ...
    databaseAdapter.log("Hello Hilt")

주의할 점
context는 액티비티 생성 소멸과 밀접한 관계가 있다. 화면 회전과 같은 이벤트가 발생하면 context도 destroy 되고 재생성되기 때문에 context 사용은 항상 조심해야 한다.

profile
컴퓨터와 교육 그사이 어딘가

0개의 댓글