我有2个android intent对象,可以作为URL持久化,然后重新水化回intent对象。我想知道什么是最有效的方法来比较任何2个意图对象,以确保他们最终解决相同的活动与相同的参数等。使用intent.filterEquals
这样做,但它不包括额外。比较Android意图对象
目前我的equals
方法的代码如下所示:
Intent a = Intent.parseUri(this.intentUrl,
Intent.URI_INTENT_SCHEME);
Intent b = Intent.parseUri(other.intentUrl,
Intent.URI_INTENT_SCHEME);
if (a.filterEquals(b)) {
if (a.getExtras() != null && b.getExtras() != null) {
for (String key : a.getExtras().keySet()) {
if (!b.getExtras().containsKey(key)) {
return false;
} else if (!a.getExtras().get(key)
.equals(b.getExtras().get(key))) {
return false;
}
}
}
// all of the extras are the same so return true
return true;
} else { return false; }
但有一个更好/更清洁的方式?
好点。也许更简单的方法是检查每个keySet的大小是否相同?如果它们不具有相同的大小,那么它们就不一样了,如果它们具有相同大小的键集并且每个值都位于a == b或者它们不相同。看到你能想到的任何缺陷? – Ben
@Ben:它会是'equals()',而不是'==',就像你原来的代码一样。否则,这应该工作。 – CommonsWare
好耶,我使用伪代码:) – Ben