我有多个存储库,需要一些凭据才能使用外部服务。这些凭据存储在我的应用程序的共享首选项中,我成功地将其加载到每个存储库中。
指定这些凭据在 SOAP 标头请求中使用,它们由用户提供。
使用当前解决方案,我在活动中加载这些信条,然后通过视图模型中的方法传递到存储库。这个方法会生成大量重复的代码,因为对于我需要这些信条的每个活动,我都会重复整个过程。
是否有更好的解决方案可以遵循 MVVM 最佳实践并避免重复代码?
你能提供更多的背景信息吗?
在我看来,如果不更多地了解您的应用程序,就没有通用的答案。这些存储库是否使用相同的服务(例如网络服务?如果是这样,您可以将它们添加为自定义拦截器。
您可以将它们注入存储库后面的抽象层中。
为什么要将凭据存储在共享首选项中?它们是静态的(就像您从 API 获得的网络 API 密钥(?如果是这样,您可以将它们放在 gradle.properties 中并将它们保存为 BuildConfig 字段
为了避免冗余代码,您可以做的一件事是在实用程序类中编写该代码并在存储库中使用它。 希望对您有所帮助!:)
您可以编写一个保存凭据的 POJO 类。在 Main 活动中,使用 creds 创建一个对象,然后根据需要将此对象发送到应用程序中。