在运行时初始化依赖

Initialise dependency at runtime

我的应用包含三个组件,每个组件都有自己的范围:

  1. 单例 - 用于整个应用程序的生命周期
  2. Activity - 用于 Activity
  3. 的生命周期
  4. 用户 - 当用户登录到我们的服务器时使用

我的一些活动在用户组件中具有依赖性。但是我的一些活动在用户未登录时存在,因此在尚未创建用户组件时必须存在。

如果我的想法是正确的,最好的方法是定义一个额外的组件,给我:

  1. 单例
  2. LoggedOutActivity - 对于用户注销时存在的活动
  3. 用户
  4. LoggedInActivity - 对于仅在用户登录时才存在的活动

这意味着我的 LoggedOutActivities 不依赖于 User 组件,而 LoggedInActivities 现在可以依赖于 User 组件。

创建这个额外的组件并因此分离我的 Activities 显然会给代码增加一些复杂性,所以在我继续之前我想澄清一下这听起来是正确的方法。或者有没有更好的方法可以让我在一个范围内将我的所有活动联系在一起?

这完全取决于您想做什么以及如何做。

首先,我觉得你的方法还不错。如果您有不同的依赖项,您将需要不同的组件。这就是组件的用途,这就是您应该如何使用它们。

就我个人而言,通常每个 activity 都有一个组件。然后我可以让这个组件依赖于它需要的任何其他组件。我不会尝试在我的所有活动中重复使用 相同的 组件。

如果你想重用代码,你可能想重用模块。如果您总是从 activity(ContextFragmentManager 等)提供相同的内容,只需创建一个专用模块来提供这些内容。然后,您可以创建多个组件,这些组件都使用相同的模块来帮助提供 activity 范围内的依赖项——一个用于每个 activity,或者一个依赖于用户,另一个依赖于您描述的应用程序组件。