我已经启动了一项服务并将其提升到前台状态,这似乎有效。 但是现在我希望该服务启动在另一个(未启动的)应用程序后台运行的另一个服务,但它不起作用:
2023-09-14 15:21:20.427 15578-15578/se.company.myservice E/DataExportService:不允许启动服务 Intent { dat=content://se.company.storageconnector.StorageConnector/cloud/ cmp=se .othercompany.a.b.c/se.company.x.service.InformationExportService }:应用程序在后台 uid UidRecord{72c502b u10a125 CAC bg:+3m48s37ms 空闲更改:空闲过程:0 seq(0,0,0)}
但是,如果我单击并启动包含我想要启动的服务的应用程序,那么它就会开始工作。到底是怎么回事?我以为前台服务总是可以启动后台服务?
我怀疑这是 Android 的一项安全功能,即不允许启动已停止的软件包(即使是从前台),除非至少手动启动一次。该问题发生在强制停止(可能是全新安装)后,但打开一次后,即使重新启动也不会阻止其工作。
在 Android 中,平台可以通过在启动意图中设置标志来启动已停止的包,但非平台应用程序不允许这样做。我想我对此无能为力。