Android (API 28) - 在后台接收隐式意图

Android (API 28) - Receiving implicit intents in background

我对当前 Android 后台服务的可能性感到非常困惑,需要专家的帮助 :)

"xDrip" 应用程序正在通过一个(我猜是隐含的)意图使用操作名称 "com.eveningoutpost.dexdrip.BgEstimate" 广播其信息。我想收到这些意图。由于不允许将它们放入清单中,因此我在我的应用程序 class 的 onCreate() 方法中动态注册了它们。只要该应用程序是 运行(即使该应用程序未在屏幕上打开),它就可以很好地工作。但是,如果我在应用程序概述中将其滑开,即使我没有注销意图,它也不会再收到意图。

我现在的问题是:始终可靠地接收此(隐式)意图的最合适方式是什么?那么当用户在应用程序概览屏幕中将应用程序滑开时也是如此吗?

干杯!

This is working great as long as the app is running (even when the app is not open on screen).

更准确地说,只要您的流程是 运行。

But if I swipe it away in the app overview, it does not receive the intents any more even though I do not unregister the intent.

更准确地说,一旦您的进程停止,您就停止接收广播 运行。请注意,这会在您处于后台时自然发生,即使您没有手动将您的应用滑出概览屏幕也是如此。

What would be the most suitable way to receive this (implicit) intent reliably all the time?

从技术上讲,这是不可能的。

如果您使用前台服务,您将接近成功,从而使您的流程运行更长时间。然而:

  • 用户仍然可以将应用滑出概览屏幕,这可能仍会停止您的服务并终止您的进程

  • 即使是具有前台服务的进程也可能会在相当长的一段时间后Android自动终止

  • 您的应用程序将一直消耗系统 RAM,用户可能会或可能不会喜欢