检查片段是否在服务中可见

时间:2015-08-31 11:01:39

标签: android android-fragments

我有一个用于消息传递应用的GCMListenerService(Google Cloud Messaging)。当我收到消息onMessageRecieved()时,我需要能够检查特定片段是否对用户可见。如果是,那么我可以向该片段发送广播以更新UI,否则我需要创建通知。任何想法我怎么能做到这一点。我知道片段(甚至活动)可能都没有打开,这正是我在尝试发送广播之前必须检查的原因,任何想法?我可以将活动内容传递给服务,以便我可以调用getFragmentManager()吗?

2 个答案:

答案 0 :(得分:2)

我认为可靠的方法是从其可见性片段内通知服务,例如使用EventBus或IBinder实现(如果服务在与片段不同的进程中运行,EventBus将无法工作)。只需在片段恢复时向服务发送消息,并在片段暂停时发送另一个消息,并相应地设置一些服务标志,指示是否应发布通知或发送广播。

答案 1 :(得分:0)

我不确定这是否适合您的问题,因为我没有看到您的代码,但您可以使用此方法检查您的片段是否对用户可见

@Override
     public void setUserVisibleHint(boolean isVisibleToUser) {
     super.setUserVisibleHint(isVisibleToUser);
     if (isVisibleToUser) {
      // TODO

     }