Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:单例而非服务_Java_Android_Android Service - Fatal编程技术网

Java Android:单例而非服务

Java Android:单例而非服务,java,android,android-service,Java,Android,Android Service,我今天在面试一位候选人。我问了一个非常常见的问题:如何在Android应用程序中增加持续播放音乐的可能性,即使手机方向改变导致活动中断。预期的答案是:创建负责播放音乐的服务。而不是那个候选人建议在应用程序中创建一些单例 这也是正确答案吗?我认为它应该是有效的-单身阶级将被载入记忆,并将永远留在记忆中;我的同事建议这个单例将被销毁,因为不再有任何引用 这也是正确答案吗 伊姆霍,不 Singleton类将被加载到内存中,并将永远留在内存中 不。当它们不再位于前台时,释放系统RAM以供其他应用程序使用

我今天在面试一位候选人。我问了一个非常常见的问题:如何在Android应用程序中增加持续播放音乐的可能性,即使手机方向改变导致活动中断。预期的答案是:创建负责播放音乐的服务。而不是那个候选人建议在应用程序中创建一些单例

这也是正确答案吗?我认为它应该是有效的-单身阶级将被载入记忆,并将永远留在记忆中;我的同事建议这个单例将被销毁,因为不再有任何引用

这也是正确答案吗

伊姆霍,不

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

不。当它们不再位于前台时,释放系统RAM以供其他应用程序使用。确定这种情况发生的确切时间是基于许多变量。。。其中之一是您是否有正在运行的
服务

我的同事建议这个单例将被销毁,因为不再有任何引用

不可以。Java中的单例实现为
静态
字段。只要该字段引用了该对象,就不能对该对象进行垃圾收集。默认情况下,仅销毁活动不会神奇地将
静态
字段设置为

这也是正确答案吗

伊姆霍,不

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

不。当它们不再位于前台时,释放系统RAM以供其他应用程序使用。确定这种情况发生的确切时间是基于许多变量。。。其中之一是您是否有正在运行的
服务

我的同事建议这个单例将被销毁,因为不再有任何引用


不可以。Java中的单例实现为
静态
字段。只要该字段引用了该对象,就不能对该对象进行垃圾收集。默认情况下,仅销毁活动不会神奇地将
静态
字段设置为

创建后台任务以防止应用程序上下文被销毁的唯一方法是显示通知用户其正在运行的持久通知。给出的一个例子或多或少就是您要求应聘者提供的内容:

例如,播放服务中音乐的音乐播放器应设置为在前台运行,因为用户明确知道其操作。状态栏中的通知可能指示当前歌曲,并允许用户启动与音乐播放器交互的活动


此外,单例存在于全局作用域中,并且与全局作用域存在的时间一样长-通常直到Android杀死你的应用程序,因为它没有运行任何前台任务,当使用它的活动被清除时就不会了。

创建后台任务以防止应用程序上下文被破坏的唯一方法是显示一个持久通知,通知用户它正在运行。给出的一个例子或多或少就是您要求应聘者提供的内容:

例如,播放服务中音乐的音乐播放器应设置为在前台运行,因为用户明确知道其操作。状态栏中的通知可能指示当前歌曲,并允许用户启动与音乐播放器交互的活动


此外,单例存在于全局作用域中,并且与全局作用域存在的时间一样长-通常直到Android杀死你的应用程序,因为它没有运行任何前台任务,当使用它的活动被清理干净时就不会了。

无意冒犯,但由于这些不确定因素,你为什么要进行面试。如果你不懂基本知识,为什么要面试人?请看一看好的,伙计们,我明白你的观点,我完全同意,但这不是我的决定。我只是想公平地给这个候选人打分,这样你的同事是正确的,我会感激你的帮助;单身汉不能永远留在记忆中。见鬼,即使是活动在后台也会无缘无故地被破坏,尤其是当手机处于空闲状态时。我只会坚持使用“服务”aswer,问一些非常具体的问题,比如为什么单身汉会被认为是可以的,并质疑GC可以(也将)擦除任何东西,即使你认为不会。无意冒犯,但鉴于这些不确定因素,你为什么要进行面试。如果你不了解基本知识,为什么要面试人?请看一看好的,伙计们,我明白你的观点,我完全同意,但这不是我的决定。我只是想公平地给这个候选人打分,这样你的同事是正确的,我会感激你的帮助;单身汉不能永远留在记忆中。见鬼,即使是活动在后台也会无缘无故地被破坏,尤其是当手机处于空闲状态时。我只会坚持使用“服务”aswer,问一些非常具体的问题,比如为什么单身汉会被认为是正常的,并质疑GC可以(也会)擦除任何东西,即使你认为它不会。