0

我正在做一个项目,在那个阶段必须为不同的客户定制。应用程序由一些业务逻辑和 15 个不同的 UI 活动组成。让我们假设活动 A 开始 B,B 开始活动 C。A 知道 B,B 知道 C。我希望能够交换活动 B(使用不同的布局,有点不同的逻辑来处理用户交互),但是离开A和C完好无损。实现这一目标的最佳方法是什么?我将为不同的客户提供越来越多的不同活动(服务于类似目的),因此解决方案需要处理许多不同的配置。

我计划根据配置将自定义活动拆分到不同的库并使用 DI 容器(RoboGuice 2.0)注入它们,但看起来我仍然需要将所有活动放在 manifest.xaml 中,这需要双重工作(编辑清单+ 配置 DI 容器)。

4

2 回答 2

1

A知道B,B知道C。

在这种情况下,这听起来不太明智。

我希望能够交换活动 B(使用不同的布局,处理用户交互的逻辑有点不同),但保持 A 和 C 不变。

然后将 A、C 和所有其他常用代码放入 Android 库项目中。将 B 和其他特定于客户的代码放在依赖于库的特定于客户的项目中。有一些方法让 A(在库中)确定如何最好地启动 B(为客户)。例如,您可以让所有特定于客户的项目都使用相同的广告 B <intent-filter>(使用一个很好的特定于应用程序且其他晦涩的操作字符串),并且 A 可以简单地使用Intent将匹配该过滤器的startActivity(). 然后 A 在一般意义上了解 B(“这是 B 操作”),而不知道 B 实现,这将是客户特定的。

我计划将自定义活动拆分到不同的库并使用 DI 容器(RoboGuice 2.0)注入它们

这听起来像是用别克拍苍蝇,但也许你与 DI 有着悠久的历史。

但看起来我仍然需要将所有活动放在 manifest.xaml 中,这需要双重工作(编辑清单 + 配置 DI 容器)

然后放下 DI 容器。

于 2012-07-26T11:03:41.380 回答
0

也许,您可以将项目置于版本控制之下,而不是在您的代码中做任何事情,并且对于您的某些文件,您可以为不同的客户拥有不同的分支。

于 2012-07-25T16:50:41.840 回答