假設我已經從一個活動開始一個服務,並且它在後臺運行,並且如果我再次啓動該服務,那麼該服務是否會重新啓動或者它是否會有多個實例?單個服務的多個實例
回答
見the docs對服務的生命週期:
有一個服務可以由系統運行有兩個原因。如果有人調用Context.startService(),那麼系統將檢索服務(如果需要,創建它並調用它的onCreate()方法),然後使用客戶端提供的參數調用它的onStartCommand(Intent,int,int)方法。此服務將繼續運行,直到調用Context.stopService()或stopSelf()。
請注意,對Context.startService()的多次調用不會嵌套(儘管它們會導致對onStartCommand())進行多次相應的調用),因此無論啓動多少次,服務都會停止一次Context.stopService ()或stopSelf()被調用;然而,服務可以使用他們的stopSelf(int)方法來確保服務不會停止,直到已處理啓動的意向。
基本上,它被創建一次(主叫onCreate
),和用於向startService
每個後續呼叫,該方法onStartCommand
被再次調用。
服務器將決定是否自己調用onCreate
,具體取決於它是否已在運行。
如果我再次啓動該服務,然後將服務重新啓動
它不會重建或重新初始化本身,而是在onStartCommand
代碼運行一遍,所以一定要記住,你不在那裏做任何不能發生一次以上的事情。在onCreate
中這樣做。
Tim謝謝你的回答.....虛擬大拇指向上 –
- 1. 網絡服務 - 單實例或多個
- 2. Android服務多個實例
- 3. WCF單例服務:單實例每個?每個主機實例?
- 4. 單個Tomcat 6服務器上的多個Jira實例?
- 5. 單個服務器上的多個光油實例
- 6. Windows服務:同一個服務類的多個實例?
- 7. wcf服務庫的多個實例?
- 8. osgi - 服務的多個實例
- 9. memcache,多個實例與單個實例
- 10. 多個服務的Android單例
- 11. OSGi請求式服務? (多個實例)
- 12. mysql服務器多個實例
- 13. 多個實例Azure雲服務
- 14. ASMX服務共享單個類實例
- 15. 停止同一服務的多個實例的服務
- 16. 單服務器上的多個Glassfish實例
- 17. 在Memcached的多個服務器上設置多個實例
- 18. 從多個來源到單個SQL服務器實例的分佈式事務
- 19. gRPC(Java):服務器與多服務器服務器的多個實例
- 20. Android服務級別...跟蹤服務的多個實例
- 21. 表單的多個實例
- 22. 服務堆棧和單個服務器上的同一服務的多個實例
- 23. 多個Tomcat實例vs多個Tomcat服務
- 24. 單個服務器中的同一戰爭文件的多個實例
- 25. 一個AppEngine服務器上的多個Django實例
- 26. 同一個WCF服務的多個實例?
- 27. 如何安裝同一個windows服務的多個實例
- 28. Spring創建單例的多個實例?
- 29. 單個MEF DLL的多個實例
- 30. 單個CFIDE文件夾用於ColdFusion中的多實例多服務器配置
沒有一個,'Service'是一個singleton,'onStartCommand'會再次被調用 – pskink