Dagger - Hilt:我们是否需要使用@AndroidEntryPoint 标记所有活动

Dagger - Hilt : Do we need to mark all activities with @AndroidEntryPoint

所以我的问题是,当我开始使用 Hilt 时,我们是否需要使用 @AndroidEntryPoint 注释标记所有活动,或者我们是否可以只创建一个 BaseActivity 并将其扩展到 AppCompactActivity 并将单个 class 标记为入口点?

这行得通吗?如果有的话,这种风格的缺点是什么。

谢谢。

如果“base class”是抽象的,则不能将其标记为 AndroidEntryPoint,因此这个想法无论如何都行不通。由于每个 App 通常有一个 Activity(google 推荐),所以你不应该让你的生活变得比现在更艰难。只需用@AndroidEntryPoint 注释一个 Activity 就完成了。

我不确定这是否是一个全面的答案,也许更多的是个人意见,但我想问一下目标是什么?

您是否正在尝试减少需要编写的代码量 plate/amount?那么恐怕它会相同甚至更多,因为你必须去每个 activity 并添加继承部分。

对我来说不利的是,您现在使用继承来实现一些避免继承的东西。注释使您有机会注释任何 activity,而不用说它是基础 activity。这通常比继承更好,因为并非每个 activity 都是基础 activity 并且您可以将代码与 dagger 实际执行的操作更多地分离。我认为这更像是一种委托模式,或者更像是一种装饰器。

就是说,为了回答你的问题,我不是 100% 有效,但对我来说,它具有将继承用于不应该通过继承建模的东西的缺点。

正如 document 所说:

Classes that Hilt injects can have other base classes that also use injection. Those classes don't need the @AndroidEntryPoint annotation if they're abstract.