Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有事件触发器的后台服务_Android_Event Handling_Background Service - Fatal编程技术网

Android 带有事件触发器的后台服务

Android 带有事件触发器的后台服务,android,event-handling,background-service,Android,Event Handling,Background Service,我想为Android设计一项服务,该服务可以在后台随时运行,并可以触发事件,然后由手机上运行的应用程序处理(就像OnFling事件可以被任何应用程序监听一样)。如何在Android上实现这一点 我读过这本书 和 有人能给我介绍一下吗?您不可能拥有“可以在后台随时运行”的服务。用户可以并且将在用户想要的时候摆脱您的服务,而Android本身可以并且将在其算法决定的时候摆脱您的服务。虽然你可以使用startForeground()之类的东西来减缓Android摆脱你的服务的速度,但它不会永远运行,

我想为Android设计一项服务,该服务可以在后台随时运行,并可以触发事件,然后由手机上运行的应用程序处理(就像OnFling事件可以被任何应用程序监听一样)。如何在Android上实现这一点

我读过这本书 和


有人能给我介绍一下吗?

您不可能拥有“可以在后台随时运行”的服务。用户可以并且将在用户想要的时候摆脱您的服务,而Android本身可以并且将在其算法决定的时候摆脱您的服务。虽然你可以使用
startForeground()
之类的东西来减缓Android摆脱你的服务的速度,但它不会永远运行,用户可以通过设置应用程序或任何数量的第三方任务管理器将你从轨道上核爆

此外,对于绝大多数应用程序来说,拥有一个试图永远运行的服务是一种低劣的设计。用户放弃这类服务的原因是多方面的——它们占用了RAM,而RAM可以用于用户目前更看重的应用程序。写得不好的服务也会消耗比保证的更多的CPU、电池、带宽等。由于您拒绝实际解释您试图实现的目标,因此我既不能告诉您用户是否认为您的服务是合理的,也不能建议替代实现以避免“永久服务”


一项服务当然可以发送广播
意图
,如果其他应用选择的话,它们也可以接收。这是否符合您的一个需求(“我启动了一个XYZ事件,任何应用程序都可以监听该事件并执行某些任务”),我不能说。

您不能从服务发出
OnFling
事件,除了您自己的活动之外——当然不能向其他应用程序发出。因此,我建议你编辑你的问题,以提供更多关于你试图“发射”的“事件”种类的澄清。OnFling只是一个例子。OnFling由Android系统启动,任何正在运行的应用程序都可以监听,然后运行的应用程序可以执行一些任务。我想做的是触发一个XYZ事件,任何应用程序都可以监听该事件并执行一些任务。我希望这能让事情变得更清楚一点。我正在尝试设计的应用程序将用于处理系统的输入(就像我们现在有了触摸屏,假设我们添加了另一种输入媒介),因此后台服务可能永远不会关闭,让我们假设安卓永远不会关闭它(我们可以稍后再处理)。我认为必须采取措施处理事件的触发。但正如你所解释的,意图可以做类似的事情。你能详细说明一下这是如何实现的吗?@KillerTheLord:“将用于处理系统的输入”--这将作为带有适当Linux设备驱动程序的自定义Android构建的自定义ROM的一部分最有效。“BackgroundService可能永远不会被关闭,让我们假设它永远不会被Android关闭”——这是不可能的,除非是作为带有自定义Android构建的自定义ROM的一部分。“您能详细说明如何实现这一点吗?”--最多用于偶尔发生的事件,如系统广播
动作\摄像机\按钮
动作\媒体\按钮
。这不适用于连续事件。首先,Thanx。是的,我的驱动程序处于低级别(C级别和所有必需的内容),关于自定义ROM,我同意您的意见,以阻止Android终止该服务。需要自定义ROM。射击项目怎么样?如果后台服务触发事件,任何进程都可以监听它吗?正如我前面提到的,这段代码触发了一个事件,并且有用于监听该事件的代码,该监听可以由运行在Android上的任何应用程序完成吗?@KillerTheLord:“该监听可以由运行在Android上的任何应用程序完成吗?”——不使用该代码,它就不能。这纯粹是一个过程。同样,对于只有一两个按钮的输入设备,使用广播
意图可以工作,但这种方法不适用于频繁事件。那么对于频繁事件应该采取什么方法?安卓在触摸屏幕或发生放纵行为时也会触发很多事件,这是如何实现的?