Skip to content

事件监听

事件监听是 Korrent 的核心,我们使用 Guava EventBus 来实现它。

监听事件

java
import com.google.common.eventbus.Subscribe;
import moe.shizuki.korrent.bittorrent.event.QBittorrentTagCreatedEvent;
import moe.shizuki.korrent.plugin.annotation.KorrentEvent;

@KorrentEvent
public class OnEvent {
    @Subscribe
    public void onEvent(QBittorrentTagCreatedEvent event) {
        System.out.println(event.getTag());
    }
}
kotlin
import com.google.common.eventbus.Subscribe
import moe.shizuki.korrent.bittorrent.event.QBittorrentTagCreatedEvent
import moe.shizuki.korrent.plugin.annotation.KorrentEvent

@KorrentEvent
class OnEvent {
    @Subscribe
    fun onEvent(event: QBittorrentTagCreatedEvent) {
        println(event.tag)
    }
}

在单个类中监听多个事件

java
import com.google.common.eventbus.Subscribe;
import moe.shizuki.korrent.bittorrent.event.QBittorrentTagCreatedEvent;
import moe.shizuki.korrent.plugin.annotation.KorrentEvent;

@KorrentEvent
public class OnEvent {
    @Subscribe
    public void onTagCreated(QBittorrentTagCreatedEvent event) {
        System.out.println(event.getTag());
    }

    @Subscribe
    public void onTagRemoved(QBittorrentTagCreatedEvent event) {
        System.out.println(event.getTag());
    }
}
kotlin
import com.google.common.eventbus.Subscribe
import moe.shizuki.korrent.bittorrent.event.QBittorrentTagCreatedEvent
import moe.shizuki.korrent.plugin.annotation.KorrentEvent

@KorrentEvent
class OnEvent {
    @Subscribe
    fun onTagCreated(event: QBittorrentTagCreatedEvent) {
        println(event.tag)
    }

    @Subscribe
    fun onTagRemoved(event: QBittorrentTagCreatedEvent) {
        println(event.tag)
    }
}

自动注册监听器

@KorrentEvent 用于自动将类注册为监听器,以避免手动管理其生命周期。

不建议以任何方式手动管理监听器。