0

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

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

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

干杯!

4

1 回答 1

3

只要应用程序正在运行(即使应用程序未在屏幕上打开),它就可以很好地工作。

更准确地说,只要您的进程正在运行,它就可以很好地工作。

但是,如果我在应用程序概述中将其滑开,即使我没有取消注册意图,它也不会再收到意图。

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

始终可靠地接收此(隐式)意图的最合适的方法是什么?

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

如果您使用前台服务,您将接近,以使您的进程保持更长的时间。然而:

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

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

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

于 2020-02-09T21:13:26.667 回答