Android库项目 - 定义类

Mim*_*ito 8 android design-patterns android-library

嘿! (在这里为长篇文章道歉)

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

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

我正在尝试使用Android库项目,以便将所有公共代码放在一个位置,因此只需进行一次主要更改,所有项目都将更新.

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

现在,我的问题是如何对课程做同样的事情?例如,ill有一个基本视图作为所有视图中公共代码的包装器.在此,我发起各种活动.如果所有三个应用程序需要启动不同的活动,因为它们将包含不同的UI和功能,该怎么办?我该怎么做?库项目永远不会知道主项目想要使用不同的活动,因为它已经被编译.

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

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

  2. 我保留了库项目活动中不会改变的所有功能.然后我扩展了这个活动,并覆盖onCreate以执行我需要的操作(例如加载不同的布局,设置视图等).现在这有一个缺点,因为我必须在我的主应用程序而不是库项目中定义大多数入口点.

我希望你关注我的问题.请问我是否解释过这个问题.

谢谢,

亚当

Seb*_*oth 0

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

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

一些给你的链接:

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