我想为Android设计一个服务,它可以随时在后台运行,并可以触发事件,然后由手机上运行的应用程序处理(比如任何应用程序都可以监听OnFling事件)。如何在Android上实现这一点?
我已阅读http://www.mikenimer.com/?p=671和http://android.kgmoney.net/2010/05/08/creating-a-simple-android-service-for-background-processing/
有人能指导我吗?
您不可能拥有"可以随时在后台运行"的服务。只要用户愿意,用户就可以也会放弃你的服务,而安卓系统本身也可以也会在算法决定的时候放弃你的服。虽然你可以使用startForeground()
之类的东西来减缓安卓系统取消你的服务的速度,但它不会永远运行,用户可以通过设置应用程序或任何数量的第三方任务管理器从轨道上对你进行核攻击。
此外,对于绝大多数应用程序来说,拥有一个试图永远运行的服务是一种低劣的设计。用户放弃这些服务是有原因的——它们占用了RAM,而RAM本可以用于用户目前更看重的应用程序。写得不好的服务还可能消耗比保证的更多的CPU、电池、带宽等。由于您拒绝实际解释您试图实现的目标,我既不能告诉您用户是否认为您的服务是合理的,也不能建议避免"永久服务"的替代实现。
一个服务当然可以发送广播Intents
,如果其他应用程序选择的话,他们可以接收。这是否符合你的一个需求("我启动了一个XYZ事件,任何应用程序都可以监听这个事件并执行一些任务"),我无法确定。