Android 服务多次呼叫,并结束自身

Android 服务多次呼叫,并结束自身,android,android-intent,service,Android,Android Intent,Service,我通过单击按钮启动服务: Intent intent = new Intent(getActivity(), UploadService.class); getActivity().startService(intent); 我的应用程序可以启动多种服务。 我知道,第一次调用onCreate()时,如果服务正在运行,则调用onStartCommand() onStart命令返回START\u STICKY 但我面临着一种奇怪的行为: 第一次单击时,将调

我通过单击按钮启动服务:

Intent intent = new Intent(getActivity(), UploadService.class);                     
getActivity().startService(intent);
我的应用程序可以启动多种服务。 我知道,第一次调用onCreate()时,如果服务正在运行,则调用onStartCommand()

onStart命令返回
START\u STICKY

但我面临着一种奇怪的行为: 第一次单击时,将调用服务,先调用onCreate(),然后调用onStartCommand()。。。等 第二次单击时,服务仍在运行,onStartCommand()。。。等等

但是当第一个任务完成时,会调用onDestroy(),而第二个任务仍在进行中

如何避免这种情况


谢谢

如果您启动了已经运行的服务,那么将不会调用服务的
ondestory()
,并且已经运行的服务实例将被放在前面,但是如果您的服务已显式完成/停止,则只会调用其
ondestory()

如果您启动已经运行的服务,则不会调用服务的
ondestory()
,并且已经运行的服务实例将被放在前面,但是如果您的服务已明确完成/停止,则只会调用其
ondestory()

但我从未调用onDestroy()。我不知道为什么服务会自我毁灭。嗯。。。我犯了一个错误。实际上,我调用stopService()。。。现在,如果我从不调用stopService(),那它们呢?您的服务将一直运行,直到操作系统需要一些资源来终止您的服务并运行其他一些高优先级任务,但是当您使用
start\u STICKY
时,只要资源再次可用,操作系统就会再次启动您的服务。这样做不好吗?不,如果你想让你的服务在后台运行,你必须返回
START\u STICKY
,否则让服务完成工作,并在工作完成后立即完成/停止。但我从不调用onDestroy()。我不知道为什么服务会自我毁灭。嗯。。。我犯了一个错误。实际上,我调用stopService()。。。现在,如果我从不调用stopService(),那它们呢?您的服务将一直运行,直到操作系统需要一些资源来终止您的服务并运行其他一些高优先级任务,但是当您使用
start\u STICKY
时,只要资源再次可用,操作系统就会再次启动您的服务。这样做不好吗?不,如果你想让你的服务在后台运行,你必须返回
START\u STICKY
,否则让服务完成工作,并在工作完成后立即完成/停止。