我的单身人士会被杀死吗?
Will my singleton be killed?
我有一个应用程序,我在其中创建了一个前台服务,以确保即使用户退出应用程序或应用程序因内存压力而终止,用户启动的上传也会继续。
服务和应用程序都使用单例来传递数据。我知道这不是最好的解决方案,所以请不要对 bad-bad 单例发表评论,因为问题不在这个问题中,而是在以下问题中:
当我关闭应用程序时,我的前台服务会继续 运行 并且可以访问单例。由于内存压力,单例是否存在被垃圾收集的风险,或者在这种情况下使用单例是否存在任何其他与内存相关的风险?
- 单例没有什么不好的。但与任何其他模式或方法一样,它可能会被不当使用。
- 由于内存压力或任何其他原因,系统可能会终止您的应用程序。但是您的
Service
稍后会重新启动。
- 单例模式是系统中非常有用的模式,因为它是一种静态格式。只需要一个对象来协调整个系统的动作。您无需担心重复或不小心创建了多个模块。
- 前台服务是一种被认为是用户主动意识到(具有焦点)的服务,因此不会在内存不足时被系统杀死。骨骼对象不会被杀死。
静态变量只有在应用程序被终止时才会被销毁。因此,当您的服务 运行 时,它们不会随机消失。但是,如果您的整个服务重新启动,您必须考虑在重新启动时没有单例的可能性。
我有一个应用程序,我在其中创建了一个前台服务,以确保即使用户退出应用程序或应用程序因内存压力而终止,用户启动的上传也会继续。
服务和应用程序都使用单例来传递数据。我知道这不是最好的解决方案,所以请不要对 bad-bad 单例发表评论,因为问题不在这个问题中,而是在以下问题中:
当我关闭应用程序时,我的前台服务会继续 运行 并且可以访问单例。由于内存压力,单例是否存在被垃圾收集的风险,或者在这种情况下使用单例是否存在任何其他与内存相关的风险?
- 单例没有什么不好的。但与任何其他模式或方法一样,它可能会被不当使用。
- 由于内存压力或任何其他原因,系统可能会终止您的应用程序。但是您的
Service
稍后会重新启动。
- 单例模式是系统中非常有用的模式,因为它是一种静态格式。只需要一个对象来协调整个系统的动作。您无需担心重复或不小心创建了多个模块。
- 前台服务是一种被认为是用户主动意识到(具有焦点)的服务,因此不会在内存不足时被系统杀死。骨骼对象不会被杀死。
静态变量只有在应用程序被终止时才会被销毁。因此,当您的服务 运行 时,它们不会随机消失。但是,如果您的整个服务重新启动,您必须考虑在重新启动时没有单例的可能性。