我正在开发一个Android应用程序,并且想知道以startService()
开头的服务与执行startService()
中放置的相同代码的单例类之间的区别。
因此,例如,如果我设置了VideoRecordingService
服务来记录来自相机的视频,那么CameraRecorderClass
单例类就会有StartRecording()
也记录来自摄像机的视频的方法,它们有何不同?
它们都与任何活动生命周期无关,并且它们都使用主线程来完成它的工作。
由于
答案 0 :(得分:2)
当您想要进行一些后台操作时,主要使用服务。例如: - 在您的应用程序中播放音乐。因此,如果您没有运行任何活动,您可以使用服务播放音乐。
如果您关闭应用程序/活动,则单个实例将无法正常工作,除非您在某个后台任务中执行它。此外,当您的服务因某种原因被杀时,如果您从START_STICKY
返回onStartCommand
,服务将自动重启。
所以,在你的情况下,如果你真的想做一些长时间的后台运行操作,那么最好使用Service而不是你的Singleton实例。
答案 1 :(得分:1)
使用startService
时,它会创建该类的新实例,它可以有一个上下文,并执行Service
类继承的各种事情。您可以在具有上下文的应用程序中的任何位置创建此项,并且可以多次启动和停止它(使用startService
和stopSelf
)
使用单例类,它是一个静态对象,你只能拥有一次实例(除非你想创建更多我猜?)。静态对象可以没有太大的不同,但它没有上下文和类附带的所有好的android东西(除非你传递一个上下文或你可能需要的东西)。
也可以运行服务而无需通过使用活动调用它,或显示UI,它可以在没有UI的后台运行,并且可以使用广播监听器启动而不会中断用户,只要如果服务正在运行,则系统不应自动关闭服务,而是如果您在单例中启动异步任务,然后关闭活动并且活动被销毁。
可能还有更多内容。但你必须看看dalvik ..