我想为Android设计一个可以随时在后台运行的服务,并且可以触发可以由手机上运行的应用程序处理的事件(比如可以通过任何应用程序监听OnFling事件)。如何在Android上实现这一目标?
我看过http://www.mikenimer.com/?p=671 和 http://android.kgmoney.net/2010/05/08/creating-a-simple-android-service-for-background-processing/
有人可以指导我吗?
答案 0 :(得分:1)
您无法拥有“可以随时在后台运行”的服务。用户可以并且将在用户想要的时候摆脱您的服务,并且Android本身可以并且将在其算法决定时将摆脱您的服务。虽然您可以使用startForeground()
之类的东西来减慢Android摆脱您的服务,但它不会永远运行,并且用户可以通过“设置”应用或任意数量的第三方任务自由地从轨道上攻击您管理者。
此外,对于绝大多数应用而言,拥有一个试图永远运行的服务是一种劣质设计。用户摆脱此类服务的原因有很多 - 它们占用了可用于目前用户更重视的应用程序的RAM。写得不好的服务也可能消耗更多的CPU,电池,带宽等。既然你拒绝真正解释你想要完成什么,我既不能告诉你用户是否认为你的服务是合理的,或者建议可以避免“永久服务”的替代实施。
如果他们愿意,服务肯定会发送其他应用可以接收的广播Intents
。这是否适合您的需求(“我发起XYZ事件,任何应用程序可以监听此事件并执行某项任务”),我不能说。