我想为Android TV平台构建一个应用程序。此应用程序的一部分是服务/守护程序,该服务/守护程序必须在设备启动时启动,并且必须始终在Android TV开机时运行,即使在待机状态也是如此。
为什么我要一直运行此服务/守护程序?我的项目的一部分是便携式设备(例如智能手机和/或平板电脑)的应用程序,它将通过TCP将命令发送到Android TV应用程序。根据TCP消息的种类,该应用将执行一项操作(打开/关闭电源设备,将我的应用推送到前台等)。
我尝试了不同的代码示例,但是Android TV Oreo不久后就终止了该服务。我认为这些代码示例是在Android Oreo限制之前制作的。
像Android电视上的Kodi这样的应用程序具有始终在后台运行的Web服务。即使在奥利奥(Oreo)上。但我不知道他们是如何做到的。有人给我一些提示吗?
编辑:Yatse Remote Starter可以完成我对Kodi的要求,也可以完成我对应用程序的要求。它在启动时启动,甚至可以在待机状态下运行。 https://play.google.com/store/apps/details?id=tv.yatse.android.remotestarter&hl=en。我仍然想知道如何做,所以我也可以自己做。预先感谢!
答案 0 :(得分:2)
许多android应用和服务正在同时运行。为了降低引起不良用户体验的问题的机会,Android 8.0应用程序具有two ways to limit what an app can do:
后台服务限制:在应用程序空闲时,存在限制 使用后台服务。 这不适用于前景 服务 ,这些对用户来说更明显。
广播限制:除少数例外,应用无法使用其 清单以注册隐式广播。他们仍然可以注册 在运行时进行这些广播,他们可以使用清单来 注册专门针对其应用的露骨广播。
因此,您需要创建一个ForegroundService才能继续处理您的应用程序。您可以检查有关此问题的SO post。