diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2015-02-12 05:41:31 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-02-12 05:41:31 -0800 |
commit | 08981f519f42aad5eefb274df6f35d724a32019c (patch) | |
tree | 666bc935df43db8cbd1e9b838cf381505cbdb7ae | |
parent | 448e380112db3527cfe47721689128d77bea63d6 (diff) | |
parent | fa397f3fad634fdde390500bfc0a6abf0a36e1b4 (diff) | |
download | packages_apps_Contacts-08981f519f42aad5eefb274df6f35d724a32019c.tar.gz packages_apps_Contacts-08981f519f42aad5eefb274df6f35d724a32019c.tar.bz2 packages_apps_Contacts-08981f519f42aad5eefb274df6f35d724a32019c.zip |
Merge "Contants: Modify ANR in group detial,when group has 500 member"
-rw-r--r-- | src/com/android/contacts/group/GroupDetailFragment.java | 43 | ||||
-rw-r--r-- | src/com/android/contacts/util/RCSUtil.java | 105 |
2 files changed, 85 insertions, 63 deletions
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java index 1d2d70d59..43dbed247 100644 --- a/src/com/android/contacts/group/GroupDetailFragment.java +++ b/src/com/android/contacts/group/GroupDetailFragment.java @@ -305,27 +305,40 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener { updateSize(data.getCount()); mAdapter.setContactCursor(data); mMemberListView.setEmptyView(mEmptyView); - // For starting RCS group-chat. - StringBuilder sb = new StringBuilder(); - mGroupMembersPhonesList.clear(); - while(data.moveToNext()){ - Long id = data.getLong(0); - String phoneNumber = RCSUtil.getPhoneforContactId(mContext, id); - sb.append(phoneNumber).append(";"); - String[] groupMemberPhones = RCSUtil.getAllPhoneNumberFromContactId(mContext, id) - .split(";"); - for (int i = 0 ; i < groupMemberPhones.length; i++) { - mGroupMembersPhonesList.add(RCSUtil.getFormatNumber(groupMemberPhones[i])); - } - } - Log.d(TAG,"mGroupMembersPhonesList:"+mGroupMembersPhonesList.toString()); - mGroupMembersPhones = sb.toString(); + getGroupMemberPhoneNumber(data); } @Override public void onLoaderReset(Loader<Cursor> loader) {} }; + private void getGroupMemberPhoneNumber(final Cursor data) { + new Thread () { + @Override + public void run() { + // For starting RCS group-chat. + StringBuilder sb = new StringBuilder(); + mGroupMembersPhonesList.clear(); + while (data.moveToNext()) { + Long id = data.getLong(0); + String phoneNumber = RCSUtil.getPhoneforContactId(mContext, + id); + sb.append(phoneNumber).append(";"); + String[] groupMemberPhones = RCSUtil + .getAllPhoneNumberFromContactId(mContext, id) + .split(";"); + for (int i = 0; i < groupMemberPhones.length; i++) { + mGroupMembersPhonesList.add(RCSUtil + .getFormatNumber(groupMemberPhones[i])); + } + } + Log.d(TAG,"mGroupMembersPhonesList:" + + mGroupMembersPhonesList.toString()); + mGroupMembersPhones = sb.toString(); + } + }.start(); + } + private void bindGroupMetaData(Cursor cursor) { cursor.moveToPosition(-1); if (cursor.moveToNext()) { diff --git a/src/com/android/contacts/util/RCSUtil.java b/src/com/android/contacts/util/RCSUtil.java index a630ac99a..b23e19516 100644 --- a/src/com/android/contacts/util/RCSUtil.java +++ b/src/com/android/contacts/util/RCSUtil.java @@ -2585,72 +2585,81 @@ public class RCSUtil { public static String getPhoneforContactId(Context context, long contactId) { - String phone = null; + String phone = ""; Cursor phonesCursor = null; phonesCursor = RCSUtil.queryPhoneNumbers(context, contactId); - if (phonesCursor == null) { - return ""; - } - if (phonesCursor.getCount() == 0) { - // No valid number - // signalError(); - return phone; - } else if (phonesCursor.getCount() == 1) { - // only one number, call it. - phone = phonesCursor.getString(phonesCursor - .getColumnIndex(Phone.NUMBER)); - } else { - phonesCursor.moveToPosition(-1); - boolean first = true; - while (phonesCursor.moveToNext()) { - if (first) { - // + try { + if(null != phonesCursor) { + if (phonesCursor.getCount() == 0) { + // No valid number + // signalError(); + if (!phonesCursor.isClosed()) { + phonesCursor.close(); + } + return phone; + } else if (phonesCursor.getCount() == 1) { + // only one number, call it. phone = phonesCursor.getString(phonesCursor .getColumnIndex(Phone.NUMBER)); - first = false; - } - if (phonesCursor.getInt(phonesCursor.getColumnIndex + } else { + phonesCursor.moveToPosition(-1); + boolean first = true; + while (phonesCursor.moveToNext()) { + if (first) { + // + phone = phonesCursor.getString(phonesCursor + .getColumnIndex(Phone.NUMBER)); + first = false; + } + if (phonesCursor.getInt(phonesCursor.getColumnIndex - (Phone.IS_SUPER_PRIMARY)) != 0) { - // Found super primary, call it. - phone = phonesCursor.getString(phonesCursor - .getColumnIndex(Phone.NUMBER)); - break; + (Phone.IS_SUPER_PRIMARY)) != 0) { + // Found super primary, call it. + phone = phonesCursor.getString(phonesCursor + .getColumnIndex(Phone.NUMBER)); + break; + } + } } } + } finally { + if (null != phonesCursor) { + phonesCursor.close(); + } } - phonesCursor.close(); return phone; } public static String getAllPhoneNumberFromContactId(Context context, long contactId) { - String phone = null; + String phone = ""; Cursor phonesCursor = null; StringBuilder sb = new StringBuilder(); phonesCursor = RCSUtil.queryPhoneNumbers(context, contactId); - if (phonesCursor == null) { - return ""; - } - if (phonesCursor.getCount() == 0) { - // No valid number - // signalError(); - phonesCursor.close(); - return phone; - } else if (phonesCursor.getCount() == 1) { - // only one number, call it. - phone = phonesCursor.getString(phonesCursor - .getColumnIndex(Phone.NUMBER)); - } else { - while (phonesCursor.moveToNext()) { - // - phone = phonesCursor.getString(phonesCursor - .getColumnIndex(Phone.NUMBER)); - sb.append(phone).append(";"); + + try { + if (phonesCursor != null) { + if (phonesCursor.getCount() == 0) { + phone = ""; + } else if (phonesCursor.getCount() == 1) { + // only one number, call it. + phone = phonesCursor.getString(phonesCursor + .getColumnIndex(Phone.NUMBER)); + } else { + while (phonesCursor.moveToNext()) { + phone = phonesCursor.getString(phonesCursor + .getColumnIndex(Phone.NUMBER)); + sb.append(phone).append(";"); + } + phone = sb.toString(); + } } - phone = sb.toString(); + } finally { + if (null != phonesCursor) { + phonesCursor.close(); + } + } - phonesCursor.close(); return phone; } |