我有一个大的Android应用程序,需要根据操作系统版本,制造商和许多其他东西运行不同的代码.然而,这个应用程序需要是一个APK.它需要在运行时足够聪明才能确定要使用的代码.到目前为止,我们一直在使用Guice,但性能问题导致我们考虑迁移到Dagger.但是,我一直无法确定我们是否可以实现相同的用例.
主要目标是让我们在启动时运行一些代码,以提供兼容模块的列表.然后将此列表传递给Dagger以连接所有内容.
以下是我们要迁移的Guice中当前实现的一些伪代码
import com.google.inject.AbstractModule;
@Feature("Wifi")
public class WifiDefaultModule extends AbstractModule {
@Override
protected void configure() {
bind(WifiManager.class).to(WifiDefaultManager.class);
bind(WifiProcessor.class).to(WifiDefaultProcessor.class);
}
}
@Feature("Wifi")
@CompatibleWithMinOS(OS > 4.4)
class Wifi44Module extends WifiDefaultModule {
@Override
protected void configure() {
bind(WifiManager.class).to(Wifi44Manager.class);
bindProcessor();
}
@Override
protected void bindProcessor() {
(WifiProcessor.class).to(Wifi44Processor.class);
}
}
@Feature("Wifi")
@CompatibleWithMinOS(OS > 4.4)
@CompatibleWithManufacturer("samsung")
class WifiSamsung44Module extends Wifi44Module {
@Override
protected void bindProcessor() {
bind(WifiProcessor.class).to(SamsungWifiProcessor.class);
}
@Feature("NFC")
public class NfcDefaultModule extends AbstractModule {
@Override
protected void configure() {
bind(NfcManager.class).to(NfcDefaultManager.class);
}
}
@Feature("NFC")
@CompatibleWithMinOS(OS …Run Code Online (Sandbox Code Playgroud)