服务和单例实例之间的差异?

时间:2013-11-18 06:11:57

标签: java android android-service

我正在开发一个Android应用程序,并且想知道以startService()开头的服务与执行startService()中放置的相同代码的单例类之间的区别。

因此,例如,如果我设置了VideoRecordingService服务来记录来自相机的视频,那么CameraRecorderClass单例类就会有StartRecording()也记录来自摄像机的视频的方法,它们有何不同? 它们都与任何活动生命周期无关,并且它们都使用主线程来完成它的工作。

由于

2 个答案:

答案 0 :(得分:2)

当您想要进行一些后台操作时,主要使用服务。例如: - 在您的应用程序中播放音乐。因此,如果您没有运行任何活动,您可以使用服务播放音乐。

如果您关闭应用程序/活动,则单个实例将无法正常工作,除非您在某个后台任务中执行它。此外,当您的服务因某种原因被杀时,如果您从START_STICKY返回onStartCommand,服务将自动重启。

所以,在你的情况下,如果你真的想做一些长时间的后台运行操作,那么最好使用Service而不是你的Singleton实例。

答案 1 :(得分:1)

使用startService时,它会创建该类的新实例,它可以有一个上下文,并执行Service类继承的各种事情。您可以在具有上下文的应用程序中的任何位置创建此项,并且可以多次启动和停止它(使用startServicestopSelf

使用单例类,它是一个静态对象,你只能拥有一次实例(除非你想创建更多我猜?)。静态对象可以没有太大的不同,但它没有上下文和类附带的所有好的android东西(除非你传递一个上下文或你可能需要的东西)。

也可以运行服务而无需通过使用活动调用它,或显示UI,它可以在没有UI的后台运行,并且可以使用广播监听器启动而不会中断用户,只要如果服务正在运行,则系统不应自动关闭服务,而是如果您在单例中启动异步任务,然后关闭活动并且活动被销毁。

可能还有更多内容。但你必须看看dalvik ..