问题标签 [application-singleton]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
607 浏览

android - 应用子类类返回空指针异常

我正在创建一个应用程序,我需要从服务器加载按钮、徽标等所有组件的图像。我正在使用 Fedors Lazylist 示例 https://github.com/thest1/LazyList/tree/master/src/com/fedorvlasov/lazylist 中的三个类 MemoryCache、FileCache 和 ImageLoder 类,我们可以将 url 和 View 传递给 ImageLoader 并加载,缓存图像等

所以我想在整个应用程序中只初始化一次 ImageLoder 类,并在其他活动中重用它,为了做到这一点,我在 MyGlobalClass 中为它创建了一个对象,像这样扩展应用程序。

我在AndroidManifest.xml<appplication>中创建了字段为

但是当我在其他活动中使用它时,比如创建全局类的对象,我正在这样做:

它返回一个空指针异常。

ImageLoader我想像这样访问HomeActivity

任何人都可以看到我的代码有什么问题并提出建议吗?我还创建了一个单例字段,但不知道为什么以及如何使用它。请提供一些例子。我实际上是在 onCreate() 之前的活动类中添加上述异常行,所以这可能是问题所在..但是当我在 HomeActivity 的 onCreate() 中添加它时,它给了我 Class cast Exception..cannot cast to android。 app.Application 到 com.xx.yy.MyGlobalClass

0 投票
1 回答
353 浏览

c# - 在已在 WinForms 中运行的应用程序中打开文件

我知道有一个标题如下的问题:“在已经运行的应用程序中打开文件

这给出了针对 WPF 应用程序的问题的答案。我正在开发一个 WinForms 应用程序,其中双击特定文件应该启动程序并打开文件。当然,这很简单。现在,当应用程序已经在运行时,我想在双击时在正在运行的应用程序中打开一个文件。

为此,应用程序需要是一个单例。我更喜欢 Mutex 方法,如这篇很棒的文章“Sanity Free Coding”中所述

现在我想知道如何在正在运行的单例 WinForms 应用程序中打开双击文件。任何帮助,将不胜感激。

0 投票
2 回答
243 浏览

java - 覆盖应用程序类并通过静态变量访问它是否安全?

在我的 android 应用程序中,我正在重写 Application 类,如下所示。

我这样做是为了在配置更改之间保持我的 applicationcontext releted stuf(例如我使用 applicationcontext 创建并在整个应用程序上使用的数据库连接),并在不需要活动对象(Activity.getApplication())的情况下访问应用程序实例。

现在的问题是,保留应用程序的静态实例有什么不好的地方吗?我的意思是,根据我的理解,在Application.onCreate()被调用之后(应该只发生一次),MyApplication.getInstance()永远不应该返回 null。这是真的?

Android上还有什么方法可以多次启动应用程序实例(不杀死旧实例)?如果有,我的静态instance变量将在第二个实例说明后指向什么?我猜,因为它们将是不同的进程,每个都指向它自己的应用程序,但我不能确定。

PS:我不是在问覆盖Application类,我已经知道Dianne Hackborn(Android框架工程师)说不需要覆盖Application类,使用Singletons应该没问题。问题更多是关于应用程序生命周期和保持静态变量。

0 投票
1 回答
975 浏览

android - 将“用户数据”的 Android Singleton 保存到 JSON 文件

现在,我的应用程序正在使用单例类“UserData”来维护用户偏好和设置。每次进行更改时,我都会将所有数据保存到 JSON 文件中。所以,我所有的 setter 都调用 saveToFile()。

这工作得很好,但我只是不喜欢每次调用 setter 时都进行保存。我也宁愿不必将代码放在各种活动和片段中来调用方法来自己保存数据。

理想情况下,我希望单例在应用程序关闭(或关闭/销毁)时保存数据。我还有一个 Application 类,用于跨活动保留一些对象,但是当应用程序关闭或被销毁时,我看不到回调。

有没有一种可靠的方法可以让单例知道它什么时候被销毁,这样它就可以在那个时候保存数据?我想确保它永远不会丢失对其用户数据的更改。

或者,有没有比使用单例更好的方法来做到这一点?

谢谢!

编辑:

SharedPreferences不是一个好的选择,因为:

  1. 我要保存三个字符串数组列表,它们只添加了对 API 11+ 的支持。JSON 可以很好地处理数组。
  2. 无论如何,它都做同样的事情,只是它将它保存为 XML 数据而不是 JSON。由于它将数据保存到一个文件中,因此每次更新字段时,它仍然必须一次保存整个内容。
  3. 我想我可以做得更好。

因此,我修改了我的实现,以便我的基 Activity 类覆盖 onStop() 以在我的 Singleton 中调用 onSave()。修改字段时,它会设置一个标志,并且仅在设置该标志时才保存数据。

对 Singleton 的引用由我的 Application 类作为静态变量进行管理。它在应用程序启动时读取数据。

我还对其进行了修改以异步进行保存。

我看不出这怎么会失败,除非由于内存问题,Android 在没有调用任何生命周期方法的情况下杀死了应用程序。

你怎么看?

0 投票
3 回答
524 浏览

java - 单例更适合 Android 吗?为什么?

我去一些采访,有问下面的问题。请帮我。

单例更适合 Android 吗?为什么?

我用谷歌搜索,但没有得到正确的解决方案。请给我正确的答案。

0 投票
1 回答
233 浏览

ios - 用户信息。是否使用单例类?

我的应用程序将由一位用户使用。但是,会有很多与用户相关的信息。所以我有一个名为 User.h/.m 的类和@property 许多字段。由于只有一个用户将使用电话,因此将为此类创建一个实例。

我的问题是,

1.我应该为这个类采用单例设计模式吗?我不想通过不同的视图控制器一次又一次地实例化这个类。

  1. 我正在使用核心数据保存有关此类的所有信息。话虽如此,这是否迫使人们更多地使用单例?

  2. 单例设计模式是要走的路吗?还是应该使用外部json文件或plist?

谢谢

0 投票
2 回答
151 浏览

android - Android扩展Application模式的疑惑

我在我的 Android 应用程序中扩展了我的应用程序,以便存储我在应用程序中使用的不同字体。一切正常,但是我不理解代码的单例部分以及 getInstance 的目标是什么(我在那里设置了一个断点并且它从未被调用,如果我更改方法的名称,应用程序也可以正常工作出色地)。有人可以告诉我这种模式吗?我通常不使用 OOP,所以这可能是一个愚蠢的问题。

我的应用程序.java

然后我这样打电话:

编辑

根据我收集的答案和一些额外的研究,这是我最终使用的课程:

我将其初始化为:

并将我的字体设置为:

0 投票
1 回答
244 浏览

caching - 单例对象和 AppPool 回收

我目前正在构建针对 kerberos 域控制器对用户进行身份验证的休息服务。由于每次用户尝试在系统中执行操作时戳 KDC 非常耗时,因此我有一个缓存,用于存储身份验证令牌及其相关主体。

所以基本上,我的服务提供两种身份验证方案:Kerberos 和令牌。我遇到的问题是我的缓存对象(在我的 DI 容器中限定为单例)在应用程序池被回收时丢失了。此外,即使应用程序池没有被回收,这种行为也会阻止我将我的服务分发到多个服务器上。

如何在应用程序池中保留我的缓存对象?