有一个AIDL界面

interface ISimpleService {
    void register(in ISomeCallback callback);
    void deregister(in ISomeCallback callback);
}


回调是这样定义的

interface ISomeCallback {
    void notify(int event);
}


registerderegister实现中,通过LinkedBlockingQueueadd方法将回调放入remove中。问题在于,通过AIDL传递的具有相同哈希值的同一对象在AIDL(内部注册和注销方法)之后具有不同的哈希值,并且将其视为不同的实例,因此永远不会从队列中删除这些对象。

在删除过程中,如何在不添加键的情况下检查对象是否与队列中的对象相同(我在更改界面方面受到限制)?

最佳答案

您可以尝试覆盖hashCode()实现的equals()ISomeCallback方法。这样,您可以决定哪些对象相同。

10-06 15:58