我正在开发一个项目,在那个阶段必须为不同的客户定制。应用程序包含一些业务逻辑和UI的15种不同活动。让我们假设活动A开始B,B开始活动C. A知道B,B知道C.我希望能够交换活动B(使用不同的布局,有点不同的逻辑来处理用户交互),但是请假A和C完好无损。实现这一目标的最佳方法是什么?我将为不同的客户开展越来越多的不同活动(服务类似的目的),因此解决方案需要处理许多不同的配置。
我计划将自定义活动拆分到不同的库并使用DI容器(RoboGuice 2.0)注入它们,具体取决于配置,但看起来我仍然需要将所有活动放在manifest.xaml中,这需要双重工作(编辑清单+配置DI容器)。
答案 0 :(得分:1)
A知道B,B知道C。
在这种情况下听起来不太明智。
我希望能够交换活动B(使用不同的布局,稍微不同的逻辑来处理用户交互),但保持A和C不变。
然后将A,C和所有其他常用代码放入Android库项目中。将B和其他客户特定代码放在依赖于库的客户特定项目中。为A(在库中)确定如何最好地启动B(为客户)。例如,您可以让所有特定于客户的项目使用相同的<intent-filter>
(具有良好的应用程序特定和其他模糊的操作字符串)来宣传B,并且A可以简单地使用与此匹配的Intent
过滤startActivity()
。然后A在一般意义上知道B(“这里是B动作”),而不知道B实现,这是客户特定的。
我计划将自定义活动拆分到不同的库并使用DI容器(RoboGuice 2.0)注入它们
这听起来像是用别克拍飞,但也许你对DI有着悠久的历史。
但看起来我仍然需要将所有活动放在manifest.xaml中,这需要双重工作(编辑清单+配置DI容器)
然后放下DI容器。
答案 1 :(得分:0)
也许,您可以将项目置于版本控制之下,而不是在代码中执行任何操作,对于某些文件,您可以为不同的客户分配不同的分支。