我有一个用于消息传递应用的GCMListenerService(Google Cloud Messaging)。当我收到消息onMessageRecieved()时,我需要能够检查特定片段是否对用户可见。如果是,那么我可以向该片段发送广播以更新UI,否则我需要创建通知。任何想法我怎么能做到这一点。我知道片段(甚至活动)可能都没有打开,这正是我在尝试发送广播之前必须检查的原因,任何想法?我可以将活动内容传递给服务,以便我可以调用getFragmentManager()吗?
答案 0 :(得分:2)
我认为可靠的方法是从其可见性片段内通知服务,例如使用EventBus或IBinder实现(如果服务在与片段不同的进程中运行,EventBus将无法工作)。只需在片段恢复时向服务发送消息,并在片段暂停时发送另一个消息,并相应地设置一些服务标志,指示是否应发布通知或发送广播。
答案 1 :(得分:0)
我不确定这是否适合您的问题,因为我没有看到您的代码,但您可以使用此方法检查您的片段是否对用户可见
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// TODO
}