我有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