android - Prism.Forms DI:如何避免多个单例实例?
问题描述
假设我们有一个接口 IPushNotificationService,它由 PushNotificationService 实现,并且应该作为我的 Prism.Forms 应用程序中的单例服务存在。
在 RegisterTypes 方法中注册此服务的正确方法是什么,以便我们始终只有一个实例?
方法 1: 覆盖 RegisterTypes 并调用 RegisterSingleton。
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IPushNotificationService, PushNotificationService>();
}
方法 2: 覆盖 RegisterTypes 并检查服务是否已注册。如果是,它还没有出现在 DI 容器中,请调用 RegisterSingleton。
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
if (!containerRegistry.IsRegistered<IPushNotificationService>())
{
containerRegistry.RegisterSingleton<IPushNotificationService, PushNotificationService>();
}
}
其他方法?- 最终目标是在特定时间拥有单一注册服务的单个实例。如果我使用 Xamarin Android 中的后退按钮导航回来,然后重新启动应用程序,我将获得单例注册服务的多个实例。我怎样才能避免这种情况?
解决方案
推荐阅读
- excel - 如何从不包含特定字符的列表中复制值?
- ruby - Ruby - 如何在 2 人骰子游戏中使用 while 循环和条件语句?
- java - Webdriver 中的已定义步骤生成未定义步骤?
- mysql - 合并 MySQL 中的两列并忽略 NULL
- javascript - 如何使用 querySelector 找到正确的元素
- bash - 权限被拒绝在 mac 上编辑 .bash_profile rbenv init
- node.js - Braintree dropin ui 显示卡号中插入子弹标记的垃圾字符
- java - 使用默认邮件客户端从 Java 发送电子邮件
- php - PHP 应用程序中的其他会话
- java - RecyclerView 需要很长时间才能从用户存储中填充大量视频