Android长时间运行服务

Android长时间运行服务,android,Android,我正在做一个Android项目,我需要这个应用程序即使在设备被锁定的情况下也能工作 其想法是打开将启动(意图)服务的应用程序,该服务将一直处理数据。该设备可以锁定/放置,并且在应用程序打开一段时间后,手动停止服务。该服务应始终在后台运行 我在网上找到了一些信息,但我不知道该用什么,用什么方式 我发现可以使用IntentService。此外,该服务应在新线程中运行。我需要一直处理来自gps的数据,我是否应该使用WakefulBroadcastReceiver 谢谢。您不一定想使用IntentSer

我正在做一个Android项目,我需要这个应用程序即使在设备被锁定的情况下也能工作

其想法是打开将启动(意图)服务的应用程序,该服务将一直处理数据。该设备可以锁定/放置,并且在应用程序打开一段时间后,手动停止服务。该服务应始终在后台运行

我在网上找到了一些信息,但我不知道该用什么,用什么方式

我发现可以使用IntentService。此外,该服务应在新线程中运行。我需要一直处理来自gps的数据,我是否应该使用WakefulBroadcastReceiver


谢谢。

您不一定想使用IntentService。它将自动生成一个新线程,仅用于处理传入的
Intent
。一旦处理完所有传入的
意图
s,它将停止
服务
。要长期运行
服务
,您需要从
服务
派生,启动时从
onStartCommand()
方法返回
START\u STICKY
,并生成自己的线程来处理后台工作

如果您需要监控GPS,则必须使用
唤醒锁定
来管理GPS,同时保持设备处于唤醒状态。请注意,在棉花糖中,由于新的打盹模式,甚至连唤醒锁都被忽略,所以这变得更加复杂


另外,请注意,Android的架构仍然有可能导致运行后台
服务的应用程序被终止。Android使用一种独特的进程管理技术,基于内存压力和用户感知的优先级来确定进程应该保持多长时间。我建议阅读文档中的
服务
生命周期。

在android中,它们不是确保服务永远运行的简单方法,因为LMK(低内存杀手)在系统需要资源(基于特定内存阈值)时会杀死服务,然后如果可以重新启动它。如果正确处理重新启动,服务将继续运行

被赋予前台优先级的服务被杀掉的可能性要小得多,所以这可能是您的最佳选择。但是,它们会在顶部菜单栏的后台通知您的服务正在运行