Android:Singleton而不是Service

tch*_*tch 0 java android android-service

我今天正在与其中一位候选人进行面谈.我问了一个很常见的问题:如何在Android应用程序中不断播放音乐的可能性,即使在手机方向改变时活动被破坏也是如此.预期答案是:创建负责播放音乐的服务.而不是那个候选人建议在应用程序中创建一些单例.

这也是正确答案吗?我认为它应该工作 - Singleton类将加载到内存并将永远保留在内存中; 我的同事建议这个单身人士会被破坏的活动破坏,因为不再有任何参考.

Com*_*are 5

这也是正确答案吗?

恕我直言,没有.

Singleton类将加载到内存并永远保留在内存中

进程就会被终止时,他们没有在前台了,腾出的其他应用系统RAM.确切地确定何时发生这种情况取决于许多变量......其中一个变量是你是否正在运行Service.

我的同事建议这个单身人士会被破坏的活动破坏,因为不再有任何参考.

不是.Java中的单例实现为static字段.只要该字段具有对象的引用,就不能对该对象进行垃圾回收.默认情况下,仅仅销毁活动不会将该static字段神奇地设置为null.