示例#1
0
 // Remove a contact from the ContactsCache based on the number or email address
 private void remove(Contact contact) {
   synchronized (ContactsCache.this) {
     String number = contact.getNumber();
     final boolean isNotRegularPhoneNumber =
         contact.isMe() || MessageUtils.isEmailAddress(number) || MessageUtils.isAlias(number);
     final String key = isNotRegularPhoneNumber ? number : key(number, sStaticKeyBuffer);
     ArrayList<Contact> candidates = mContactsHash.get(key);
     if (candidates != null) {
       int length = candidates.size();
       for (int i = 0; i < length; i++) {
         Contact c = candidates.get(i);
         if (isNotRegularPhoneNumber) {
           if (number.equals(c.mNumber)) {
             candidates.remove(i);
             break;
           }
         } else {
           if (PhoneNumberUtils.compare(number, c.mNumber)) {
             candidates.remove(i);
             break;
           }
         }
       }
       if (candidates.size() == 0) {
         mContactsHash.remove(key);
       }
     }
   }
 }