8

嘿!(为这里的长篇道歉)

我正在编写一些基于基本相同代码的应用程序。

每个应用程序都会有其差异,有些应用程序会有新的活动,所有应用程序都会分配不同的资源。

我正在尝试使用一个 Android 库项目,以便我可以将所有公共代码放在一个地方,因此只需进行一次重大更改,所有项目都会更新。

现在,资源是一个简单的解决方案,因为我可以在主应用程序中定义每个资源,只要命名约定保持不变,这些资源就会覆盖库项目中的资源。

现在,我的问题是除了上课,我该怎么做?例如,我有一个基本视图作为跨所有视图的通用代码的包装器。在此,我开展了各种活动。如果所有三个应用程序都需要启动不同的活动,因为它们将包含不同的 UI 和功能怎么办?我该怎么办?库项目永远不会知道主项目想要使用不同的活动,因为它已经被编译。

我有几个我想到的解决方案,但我想知道是否有人有一些想法?这对这里的任何反馈都有很大帮助:

  1. 要启动的库项目中的 Activity 存储对要加载的类的引用,该类将在启动时在主应用程序中定义。这是库项目调用此活动时,它可以加载它被告知的内容。

  2. 我将所有不会更改的功能留在库项目活动中。然后我扩展这个活动,并覆盖 onCreate 来做我需要做的事情(比如加载不同的布局、设置视图等)。现在这有一个缺点,因为我必须在我的主应用程序中而不是在库项目中定义大部分入口点。

我希望你能关注我的问题。请问我是否解释得不好。

谢谢,

亚当

4

1 回答 1

0

或者更简单:您应该使用继承还是组合来实现这种灵活性?

我也有这种结构任务。通常,您会通过重用适用的模式并将必要的代码部分分解成更小的部分来解决它。即,如果您知道区别在于视图,则将其提取到一些将针对公共接口实现并在您的基本活动中引用该接口的可区分类中。

一些链接给你:

至少从我对您的问题的理解来看,这更像是一个 OOP 设计问题。

于 2011-02-10T16:06:53.007 回答