Java 如何知道片段何时在视图中

Java 如何知道片段何时在视图中,java,android,android-fragments,observer-pattern,Java,Android,Android Fragments,Observer Pattern,我正在创建一个事件侦听器库,使用一个观察者模式,用于Android片段和活动 将有一个方法来订阅多个片段中关联的多个侦听器 当片段可见时,我的自定义事件侦听器将执行以下操作: 将查找所有已订阅该片段的侦听器 检查该片段的任何挂起事件 Fire与该片段相关联的任何未决事件 我如何知道片段或活动何时在当前视图中。以便在看到某个片段或活动时立即触发挂起事件? 我的执行摘要: 问题 现在假设一个Event1----在--->Fragment1视图中获取subscribed,并且在---->fragmen

我正在创建一个
事件侦听器库
,使用一个
观察者模式
,用于Android
片段
活动

将有一个方法来订阅多个片段中关联的多个侦听器

当片段可见时,我的自定义事件侦听器将执行以下操作:

  • 查找所有已订阅该片段的侦听器
  • 检查该
    片段的任何
    挂起事件
  • Fire
    与该
    片段相关联的任何
    未决事件
  • 我如何知道片段或活动何时在当前视图中。以便在看到某个片段或活动时立即触发挂起事件?

    我的执行摘要:

    问题

    现在假设一个
    Event1
    ----在--->
    Fragment1视图中获取
    subscribed
    ,并且在---->fragment2视图中获取相同的
    Event1
    触发/发布

    因此,我如何知道碎片1何时再次出现,以便在碎片1出现时,我可以
    触发
    事件1

    注意

    我正在实现一个库,因此我需要一个解决方案,该解决方案类似于几个EventBus库的实现

    首先,我们必须在每个片段/活动中注册事件bug

     //Define events
      public class MessageEvent { /* Additional fields if needed */ }
    //Prepare subscribers: Register your subscriber (in your onCreate or in a constructor):
    eventBus.registerSticky(this);
    
    //Declare Subscriber method
    @Subscribe  
    public void onDataChange(MessageEvent obj) {/* Do something */};
    
    //Post events:
    eventBus.postSticky(event);
    

    EventBus中的postSticky事件实现如何知道片段何时进入视图并在片段进入视图后立即触发事件?1。我如何知道片段或活动何时在当前视图中。以便在看到某个片段或活动时立即触发挂起事件?

    好的,不要担心片段或活动何时出现。利用组件的生命周期。在oncreate或onResume上注册,并在onDestroy或Unpuse上注销订阅

    2。EventBus中的postSticky事件实现如何知道片段何时进入视图并在片段进入视图后立即触发事件?

    EventBus将事件存储在队列中。当组件注册时,发布者将事件传递给组件的匹配方法

     //Define events
      public class MessageEvent { /* Additional fields if needed */ }
    //Prepare subscribers: Register your subscriber (in your onCreate or in a constructor):
    eventBus.registerSticky(this);
    
    //Declare Subscriber method
    @Subscribe  
    public void onDataChange(MessageEvent obj) {/* Do something */};
    
    //Post events:
    eventBus.postSticky(event);