@AndroidEntryPoint는 Hilt의 핵심 어노테이션으로, Android 컴포넌트(Activity, Fragment, Service 등)에 의존성 주입을 활성화하는 역할을 합니다. 이를 통해 Hilt는 해당 컴포넌트가 생성될 때 자동으로 필요한 의존성을 주입할 수 있게 됩니다.

 

사용 방법

Hilt를 사용하면 각 Android 컴포넌트에 @AndroidEntryPoint를 추가하고, Hilt가 제공하는 의존성을 주입받을 수 있습니다. 예를 들어, Activity나 Fragment에 @AndroidEntryPoint를 추가하고, ViewModel, Repository, ApiService 등과 같은 의존성을 주입받을 수 있습니다.

예시

1. Activity에서 사용

@AndroidEntryPoint
class GameActivity : AppCompatActivity() {

    // Hilt가 GameViewModel을 주입
    private val gameViewModel: GameViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_game)

        // ViewModel을 사용하여 게임 데이터를 가져오는 로직
    }
}

2. Fragment에서 사용

@AndroidEntryPoint
class GameFragment : Fragment(R.layout.fragment_game) {

    // Hilt가 GameViewModel을 주입
    private val gameViewModel: GameViewModel by viewModels()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        // ViewModel을 사용하여 데이터를 가져오는 등의 작업
    }
}

 

3. Service에서 사용

@AndroidEntryPoint
class GameService : Service() {

    // Hilt가 GameRepository를 주입
    @Inject lateinit var gameRepository: GameRepository

    override fun onBind(intent: Intent?): IBinder? {
        // 서비스에서 gameRepository를 사용
        return null
    }
}

 

@AndroidEntryPoint의 역할

  • @AndroidEntryPoint가 선언된 클래스에서는 해당 클래스가 Hilt에서 의존성 주입을 받을 수 있도록 처리됩니다.
  • Hilt는 해당 컴포넌트가 생성될 때 자동으로 주입할 의존성을 찾아서 삽입합니다.
  • @AndroidEntryPoint가 선언된 컴포넌트에서는 @Inject 어노테이션을 사용하여 의존성을 주입받을 수 있습니다.
  • @AndroidEntryPoint를 사용하면, ViewModel, Repository, Network 모듈 등 필요한 객체들이 컴포넌트에 자동으로 주입되며, 별도의 의존성 생성 코드 없이 DI 패턴을 구현할 수 있습니다.

주의사항

  • @AndroidEntryPoint는 Hilt의 DI 기능을 사용할 수 있는 컴포넌트에서만 사용해야 하며, Activity, Fragment, Service, BroadcastReceiver와 같은 Android 컴포넌트에서 사용됩니다.
  • @AndroidEntryPoint가 없는 컴포넌트에서는 Hilt를 통한 의존성 주입을 사용할 수 없습니다.

요약

@AndroidEntryPoint는 Hilt의 의존성 주입을 Android 컴포넌트에 적용할 때 사용되는 어노테이션으로, 이를 통해 Activity, Fragment, Service 등에서 의존성 주입을 쉽게 할 수 있습니다.

+ Recent posts