假设我已经从一个活动开始一个服务,并且它在后台运行,并且如果我再次启动该服务,那么该服务是否会重新启动或者它是否会有多个实例?单个服务的多个实例
回答
见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