【问题标题】:Service called several times ending itself服务调用多次结束
【发布时间】:2012-11-20 09:07:54
【问题描述】:

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

Intent intent = new Intent(getActivity(), UploadService.class);                     
getActivity().startService(intent);

我的应用可以启动多项服务。 我知道第一次调用 onCreate(),然后如果服务正在运行,则调用 onStartCommand()。

onStartCommand 返回START_STICKY

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

但是当第一个完成时, onDestroy() 被调用,而第二个仍在进行中......?

如何避免?

谢谢

【问题讨论】:

    标签: android android-intent service


    【解决方案1】:

    如果您启动已经在运行的服务,则不会调用服务的onDestroy(),并且已经运行的服务实例将被带到前面,但如果您的服务明确地完成/停止,那么只有它的onDestroy()将被调用。

    【讨论】:

    • 但我从不调用 onDestroy()。我不知道为什么服务会自我毁灭。
    • 嗯...我做错了。确实我调用了 stopService()... 现在如果我从不调用 stopService(),那它们呢?
    • 您的服务将继续运行,直到操作系统需要一些资源来终止您的服务并运行其他一些高优先级任务,但是当您使用START_STICKY 时,只要资源再次可用,操作系统就会再次启动您的服务。
    • 这样操作不好吗?
    • 不,如果你想让你的服务在后台运行,你必须返回START_STICKY 否则让服务完成工作并在工作完成后立即完成/停止它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多