Android最佳实践——重构一个大的Activity类



希望重构Google maps Activity类,使其更易于维护。

目前实现了以下接口:

LocationListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, AdapterView.OnItemClickListener

除此之外,它还包含了相当多的辅助方法。

我有几个问题是关于这样做的最佳方法。

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

  2. 我应该创建助手类并创建它们的实例,将我需要的一切传递给它们的构造函数吗?例如环境。

  3. 我应该抽象我的活动类和实现每个监听器在自己的类单独吗?

提前感谢。在我的技术债务进一步积累之前,我希望遵循某种Android/Java标准。

答案将取决于你打算如何在你的应用程序中使用Activity

  1. 我应该创建静态助手类并将侦听器实现留在Activity类中吗?
    回答:这种方法将工作很好,如果你打算使用Activity在你的应用程序中只有一个地方,不需要重用你的应用程序的不同部分的活动。原因是,你将不得不使辅助功能非常灵活(很多如果)能够重用这些功能与相同的Activity,但在不同的情况和场景。

  2. 我应该创建助手类并创建它们的实例,将我需要的一切传递给它们的构造函数吗?例如环境。
    回答:这可能是更复杂的路线,但会给你最大的灵活性,关于在地图中启用/禁用功能。假设你想要一个只做两件事的map。您可以创建一个新的Activity,并调用两个辅助函数,将这两个特性添加到地图中。在应用的另一部分,你可以调用更多的辅助函数来添加更多的特性。这也将使您的地图使用最统一,因为所有功能都是通过完全相同的helper函数调用添加的。

  3. 我应该抽象我的Activity类和实现每个监听器在自己的类单独吗?
    答案:如果你打算在应用程序的不同部分重用完全相同的活动,应该使用这种方法。假设你想在"关于"部分和应用程序的各个部分显示地图。所有显示的地图将具有完全相同的功能,并将以完全相同的方式工作。(为了增加一点灵活性,您应该创建一个Abstract Fragment,其中实现了所有侦听器。这样,你可以很容易地重用你的Fragment在你的应用程序的任何部分,只需添加Fragment。)

    我个人会做选项2和3的组合,因为这样你就可以有Fragments,你可以在你的应用程序的任何地方添加,无论你想要实现的功能。

最新更新