[안드로이드 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개의 댓글

관련 채용 정보