我在正在运行的流程中运行良好。即使未显示主要活动,它也会控制特定的广播接收器。它也会以一定的间隔自行启动以检查一些参数。在检测到不存在广播接收器时,我可以直接停止服务,直到注册一个或者在该间隔重新启动它。与此同时,该服务将以START_NOT_STICKY模式运行。
但是,当我连接到服务并注册接收器时,有没有办法将其运行状态从START_NOT_STICKY更改为START_STICKY?或者我只需要在接收器中使用isRegistered标志,停止并重新启动服务并在onStartCommand中检查其值?这是一个好用的模式还是有更好的模式?
这样做的主要原因是,当应用程序不需要进程时,不要让进程在后台运行。
答案 0 :(得分:0)
从Android开发者网站Services开始,START_STICKY表示服务在运行完命令后会挂起,START_NOT_STICKY将在运行命令后结束。
根据您的描述,您一直在说您正在运行服务并添加广播接收器吗?广播接收器实际上用于接收外部请求,而不管任何其他服务。广播接收器实际上是应用程序接收外部请求的第一个联系点,然后它将负责启动服务以运行任何所需的命令。对于定期运行命令所需的服务,应根据上述服务标志的定义,根据需要启动和结束这些服务。
GCM(Google云消息传递)的示例流程。