我有一个Android应用程序,它有一个定期的后台服务。根据我的应用程序中是否有任何活动是开放的,我希望此服务有不同的反应。问题是,服务只是通过AlarmManager保持运行,使其在某种程度上与活动处于独立的“轨道”上,所以我不知道应用程序在运行时是否处于打开状态。
我能想到的最好的解决方案是,每当在我的所有活动中调用onResume()或onPause()时,都要切换一个布尔值on/off,但这似乎是一项艰巨的工作。有没有更简单、更优雅的解决方案?
发布于 2010-03-11 02:48:15
有一个更简单、更优雅的解决方案吗?
嗯,这在一定程度上取决于“反应不同”的含义。
假设如果您的活动不在前台,则要引发Notification,但如果活动位于前台,则要弹出一个对话框。
在这种情况下,您无论如何都需要一些从服务到活动的通信路径。因此,用onResume()中的服务注册回调(由活动提供),然后在onPause()中取消注册。如果存在回调,则服务将使用回调;如果没有回调,则会引发Notification。
如果需要,可以使用广播Intent (在onResume()/onPause()中的活动中注册/注销接收方)完成同样的任务。
https://stackoverflow.com/questions/2421941
复制相似问题