簡體   English   中英

服務和單例實例之間的區別?

[英]Differences between a service and a singleton instance?

我正在開發一個android應用程序,並且想知道以startService()開始的服務與執行與我在startService()代碼相同的單例類之間的區別。

因此,例如,如果我有一個VideoRecordingService服務設置為在開始時記錄來自攝像機的視頻,並且有一個CameraRecorderClass單例類,它們具有一個StartRecording()方法,該方法也可以記錄來自攝像機的視頻,它們之間有何不同? 它們都與任何活動生命周期都不相關,並且都使用主線程來完成工作。

謝謝

服務主要在您要進行一些后台操作時使用。 例如:-在您的應用程序中播放音樂。 因此,如果您沒有正在運行的“活動”,則可以使用“服務”播放音樂。

如果您關閉應用程序/活動,則Singleton實例將無法正常運行,除非您在某些后台任務中執行它。 另外,如果由於某種原因而onStartCommand服務時,如果您從onStartCommand返回START_STICKY ,則服務將自動重新啟動。

因此,在您的情況下,如果您真的想進行長時間的后台運行操作,則最好使用Service而不是Singleton實例。

使用startService它將創建該類的新實例,它可以具有上下文,並可以執行Service類繼承的各種操作。 您可以在具有上下文的應用程序中的任何位置創建此代碼,並且可以多次啟動和停止它(使用startServicestopSelf

好吧,對於一個單例類,它是一個靜態對象,您只能有一個實例(除非您想創建更多實例,否則)。 靜態對象可以沒有太大的區別,但是它沒有上下文以及類附帶的所有出色的Android東西(除非您將其傳遞給上下文或您可能需要的任何東西)。

服務也可以運行而無需通過使用活動或顯示UI來調用,它可以在沒有UI的情況下在后台運行,並且可以使用廣播偵聽器啟動而無需中斷用戶,只要該服務是運行該服務不應被系統自動關閉,而是如果您在單例中啟動了異步任務,然后關閉了活動,並且活動被銷毀了。

可能還有更多。 但您必須研究達爾維克..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM