Android最佳实践 - 重构大型活动类

时间:2015-07-24 11:03:56

标签: java android google-maps android-activity listeners

希望将Google地图活动类重构为更易于维护的内容。

目前它实现了以下接口:

LocationListenerGoogleApiClient.ConnectionCallbacksGoogleApiClient.OnConnectionFailedListenerAdapterView.OnItemClickListener

除此之外,它还包含许多辅助方法。

我有几个问题与最佳方法有关。

  1. 我应该创建静态助手类并将我的侦听器实现留在Activity类中吗?

  2. 我应该创建帮助类并创建它们的实例,将所需的一切传递给它们的构造函数吗?例如上下文。

  3. 我应该抽象我的Activity类并分别在它自己的类中实现每个监听器吗?

  4. 提前致谢。在我的技术债务进一步增加之前,我想遵循某种Android / Java标准。

1 个答案:

答案 0 :(得分:1)

答案取决于您打算如何在应用中使用Activity

  1. 我应该创建静态助手类并将我的侦听器实现留在Activity类中吗? 回答:如果您打算仅在应用中的一个位置使用Activity,并且不需要在应用的不同部分重复使用该活动,则此方法会很有效。原因是您必须使辅助函数非常灵活(许多情况下)能够重用具有相同Activity的那些函数,但是在不同的情况和场景中。有关此内容,请参阅选项3.

  2. 我应该创建帮助类并创建它们的实例,将所需的一切传递给它们的构造函数吗?例如上下文。
    回答:这可能是更复杂的路线,但在地图中启用/禁用功能方面会给您最大的灵活性。让我们假设您希望地图只有两件事。您可以创建一个新的Activity并调用2个辅助函数,将这两个特征添加到地图中。在应用程序的另一部分中,您可以调用更多辅助函数调用来添加更多功能。这也可以使您的地图使用最统一,因为所有功能都添加了完全相同的辅助函数调用。

  3. 我应该抽象我的Activity类并分别在自己的类中实现每个监听器吗? 答案:如果您打算在app的不同部分重复使用完全相同的活动,则应使用此方法。我们假设您要在“关于”中显示地图。部分和应用程序的各个部分。显示的所有地图将具有完全相同的功能,并且将以完全相同的方式工作。 (为了增加更多的灵活性,您应该创建一个Abstract Fragment并实现所有侦听器。这样,您只需添加Fragment即可轻松地在应用的任何部分重复使用Fragment 。)

    我个人会对选项2和3进行组合,因为这样你就可以在应用程序的任何地方添加Fragments,无论你希望实现哪种功能。