假設我已經從一個活動開始一個服務,並且它在後臺運行,並且如果我再次啓動該服務,那麼該服務是否會重新啓動或者它是否會有多個實例?單個服務的多個實例
回答
見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. Android服務多個實例
- 2. 單個Tomcat 6服務器上的多個Jira實例?
- 3. Windows服務:同一個服務類的多個實例?
- 4. 多個服務的Android單例
- 5. 多個實例Azure雲服務
- 6. ASMX服務共享單個類實例
- 7. 單服務器上的多個Glassfish實例
- 8. 在Memcached的多個服務器上設置多個實例
- 9. 從多個來源到單個SQL服務器實例的分佈式事務
- 10. 單實例服務
- 11. gRPC(Java):服務器與多服務器服務器的多個實例
- 12. Android服務級別...跟蹤服務的多個實例
- 13. 表單的多個實例
- 14. 多個Tomcat實例vs多個Tomcat服務
- 15. 一個AppEngine服務器上的多個Django實例
- 16. 如何安裝同一個windows服務的多個實例
- 17. 一個節點內的多個deepstream.io服務器實例
- 18. Spring創建單例的多個實例?
- 19. 單個MEF DLL的多個實例
- 20. 從一個機器人實例服務多個機器人
- 21. 服務器上有一個類有多少個實例?
- 22. 多個數據庫鏡像在1個服務器實例
- 23. 多個引用 - 單個實例
- 24. 單個vs多個MemoryCache實例
- 25. 多個服務器上的單個域
- 26. 多個閃存實例或單個閃存實例?
- 27. Realm DB:具有多個實例vs單個實例
- 28. 單個項目實例或多個項目實例?
- 29. 多個實例
- 30. 多個實例
沒有一個,'Service'是一個singleton,'onStartCommand'會再次被調用 – pskink