任何人都可以提供帮助。我已经构建了一个使用BOOT_COMPLETED意图执行的服务,因此我的服务在设备启动时启动。 ñ 在我的onStartCommand中,我使用AlarmManger注册服务,每15分钟执行一次。
这有效,但我注意到我的服务永远不会停止,因此当onStartCommand完成时 - 它永远不会停止,onDestroy永远不会被调用。
我需要从onStartCommand返回一个整数,我认为它控制了生命时间..
我应该返回什么整数?
我做错了什么?
提前感谢
修改
目前,服务器返回super.onStartCommand(......
默认情况下。那么这里又回来了什么?
如果我删除它,我不应该在我班上的onStartCommand的第一行调用(而不是返回)super.onStartCommand吗?
答案 0 :(得分:1)
当您致电onStartCommand()
时,它只会将意图传递给您已创建的服务。执行该方法后,它不应该自行终止。
要终止您的服务,请使用stopSelf()
,然后它会调用您服务的onDestroy()
方法。
根据onStartCommand中的要求,您可以返回以下任何值:
有关详细信息,请仔细阅读Android Service。
答案 1 :(得分:0)
Service lifecycle的SDK文档说
此服务将在此时继续运行,直到调用Context.stopService()或stopSelf()
对于onStartCommand (Intent intent, int flags, int startId)
的返回值,文档说明
返回值表示系统应该为服务的当前启动状态使用的语义。它可能是与START_CONTINUATION_MASK位相关的常数之一。
和
public static final int START_CONTINUATION_MASK 自:API Level 5
onStartCommand(Intent,int,int)返回的位,描述如果服务被终止,如何继续服务。可能是START_STICKY,START_NOT_STICKY,START_REDELIVER_INTENT或START_STICKY_COMPATIBILITY。
因此,如果您想停止服务,请拨打Context.stopService()
或Service.stopSelf()
。