Android和可配置的应用程序,可重用的活动

Android和可配置的应用程序,可重用的活动,android,android-activity,dependency-injection,configurable,Android,Android Activity,Dependency Injection,Configurable,我正在做一个项目,在那个阶段将不得不为不同的客户定制。应用程序由一些业务逻辑和15个不同的UI活动组成。让我们假设活动A启动B,B启动活动C。A知道B,B知道C。我希望能够交换活动B(使用不同的布局,稍微不同的逻辑来处理用户交互),但保持A和C不变。实现这一目标的最佳方法是什么?我将为不同的客户提供越来越多的不同活动(服务于类似目的),因此解决方案需要处理许多不同的配置 我计划将定制的活动拆分到不同的库中,并根据配置使用DI容器(RoboGuice 2.0)注入它们,但看起来我仍然需要将所有活动

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


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

也许,您可以将项目置于版本控制之下,而不是在代码中执行任何操作。对于某些文件,您可以为不同的客户提供不同的分支

A知道B,B知道C

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

我希望能够交换活动B(使用不同的布局,稍微不同的逻辑来处理用户交互),但保留a和C不变

然后将A、C和所有其他通用代码放入Android库项目中。将B和其他特定于客户的代码放入依赖于库的特定于客户的项目中。为A(在库中)提供一些方法,以确定如何最好地为客户启动B。例如,您可以让所有特定于客户的项目使用相同的
(使用一个漂亮的特定于应用程序的、其他不明显的操作字符串)来宣传B,而a可以简单地使用一个
意图
,该意图将匹配
startActivity()
的过滤器。然后,A在一般意义上了解B(“这是B操作”),而不知道B的实现,这是特定于客户的

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

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

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


然后放下DI容器。

我已经试过了。问题是分支=合并我不想做的更改(bug修复)。如果我最终有4个分支,那么将更改集成到所有4个分支,然后测试所有4个分支,这是一项艰巨的工作。我想要实现的是为不同的客户提供不同的UI(不仅是颜色,还有整个布局),但数据和核心逻辑仍保持不变same@user1079952如果您真的成功地将所有逻辑/数据封装在与活动分离的类中,那么合并将不会是一个大问题,因为这些业务类不需要分支。在这种理想情况下,似乎根本不应该合并。我将尝试将代码拆分为库。我考虑使用DI,因为我并没有把意图过滤器放在首位。