有一个AIDL界面
interface ISimpleService {
void register(in ISomeCallback callback);
void deregister(in ISomeCallback callback);
}
回调是这样定义的
interface ISomeCallback {
void notify(int event);
}
在
register
和deregister
实现中,通过LinkedBlockingQueue
和add
方法将回调放入remove
中。问题在于,通过AIDL传递的具有相同哈希值的同一对象在AIDL(内部注册和注销方法)之后具有不同的哈希值,并且将其视为不同的实例,因此永远不会从队列中删除这些对象。在删除过程中,如何在不添加键的情况下检查对象是否与队列中的对象相同(我在更改界面方面受到限制)?
最佳答案
您可以尝试覆盖hashCode()
实现的equals()
和ISomeCallback
方法。这样,您可以决定哪些对象相同。