我的服务在正在运行的过程中运行良好。即使没有显示主要活动,它也可以控制特定的广播接收机。它也会以特定的时间间隔自行启动以检查一些参数。在检测到不存在广播接收器时,我可以直接停止服务,直到注册或直接在该间隔重新启动。与此同时,该服务将以START_NOT_STICKY模式运行。将Android服务的启动状态从START_STICKY更改为START_NON_STICKY
但是,当我连接到服务并注册接收器时,是否有办法将其运行状态从START_NOT_STICKY更改为START_STICKY?或者我只需要在接收器中使用isRegistered标志,停止并重新启动服务并在onStartCommand中检查其值?这是一个很好的模式,还是有更好的?
这样做的主要原因是当应用程序不需要它时,在后台没有运行进程。
我已经有这样的工作。不同之处在于我已将接收器移至服务中,因为它已设置为受系统保护的接收器广播。这意味着你必须实际注册以代码接收它们。如果我停止服务,那么接收器也会停止。如果您将广播接收器放置在清单中,那么系统会自动在单独的进程中运行该接收器,如果您的应用程序恰好被销毁的话。 –
但只是一个评论,这不是我的问题的答案。我问是否可以将服务状态从START_STICKY更改为START_NOT_STICKY。这并没有回答。 –