【问题标题】:Can a service be killed by a task killer服务可以被任务杀手杀死吗
【发布时间】:2011-03-18 17:11:50
【问题描述】:

我正在编写一个内置服务的自动扬声器应用程序,并监听手机状态变化。

我希望该服务应该一直存在并且不能被杀死。

但是,我发现如果我使用一些任务杀手来杀死我的应用程序,我的监听器将在几秒钟内无法工作。

虽然我的应用程序似乎在几秒钟后自动重启并再次工作。

为什么服务仍然可以被任务杀手杀死?

服务是否就像一个活动,只是没有 UI,并且能够自动重启?

感谢您的回答。

【问题讨论】:

    标签: android


    【解决方案1】:

    当需要资源时,您不能免除您的服务被用户或操作系统自动终止的责任。

    您能做的最好的事情是尝试编写代码来补偿重新启动,但当然不要写得好像您的服务将永远无异常地运行。

    编辑

    Android 开发者文档Managing the Lifecycle of a Service 提供了有关从停止中恢复以及回调挂钩何时被调用和不被调用的有用信息。

    【讨论】:

    • 你能告诉我如何弥补这个问题,避免那几秒钟的空白吗?谢谢。
    • @dong221 实际上,您无法采取任何措施来弥补损失的时间,取决于关闭类型,可能是几秒钟或更长时间。我建议阅读有关服务生命周期的 Android 开发人员文档,我将使用链接编辑我的答案。
    【解决方案2】:

    将此技巧添加到您的服务 onCreate:

    startForeground(R.string.app_name, new Notification());
    

    它将防止服务因内存不足、任务终止等而关闭。

    【讨论】:

      【解决方案3】:

      因为剥夺用户在他/她想要的时候结束进程的能力是错误​​的。而是尝试编写解决方法,以便在服务关闭时发生 XXXXXX。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多