代码之家  ›  专栏  ›  技术社区  ›  Martin

安卓系统:当onStartCommand完成时,不会创建onDestroy

  •  0
  • Martin  · 技术社区  · 14 年前

    有人能帮忙吗。我已经构建了一个以BOOT_COMPLETED意图执行的服务,因此我的服务在设备启动时启动。 n 在我的onStartCommand中,我向AlarmManger注册服务,每15分钟执行一次。

    这是有效的,但我注意到我的服务从未停止过,因此当onStartCommand完成时——它从未停止,onDestroy从未被调用。

    我需要从onStartCommand返回一个整数,我认为它控制着生命周期。。

    我应该返回什么整数?

    我做错了什么?

    提前感谢

    编辑

    当前serive返回super.onStartCommand(。。。。。。

    这是默认的。那么,这里返回的是什么呢?

    如果我删除了它,我应该不在类中onStartCommand的第一行调用(而不是返回)super.onStartCommand吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   waqaslam    14 年前

    当你打电话时 onStartCommand() ,它只通过 意图 到您已经创建的服务。它不应该在方法执行后自杀。

    要终止您的服务,请使用 stopSelf() 然后它会呼叫 onDestroy() 您的服务方式。

    根据onStartCommand中的要求,您可以返回以下任何值:

    • 开始_持续_任务
    • 开始延迟交货
    • 启动延迟重试
    • 开始_不_恶心
    • 启动交付内容
    • 开始恶心
    • 启动_粘滞_兼容性

    有关更多信息,请阅读Android Service 小心

        2
  •  0
  •   Huang    14 年前

    的SDK文档 Service lifecycle 这么说

    此时,服务将继续运行,直到调用Context.stopService()或stopSelf()为止

    对于的返回值 onStartCommand (Intent intent, int flags, int startId) ,文件中说

    返回值指示系统应该为服务的当前启动状态使用什么语义。它可以是与START_CONTINUATION_MASK比特相关联的常数之一。

    公共静态最终int START_CONTINUATION_MASK 自:API 5级

    onStartCommand返回的位(Intent,int,int),描述在服务被终止时如何继续服务。可以是START_STICKY、START_NOT_STICKY、START_REDIVER_INTENT或START_STICCKY_COMPABILITY。

    所以,如果你想停止服务,你应该打电话 Context.stopService() Service.stopSelf()