我制作了一个应用程序来同步来自android联系人存储库的联系人,如下所示 当你完成注册过程它要求你同步你的联系人像Facebook一样,然后它将你的所有联系人电话号码发送到服务器,如果你的联系人使用相同的应用程序,服务器返回,如果不是它要求你邀请他们。
一切正常,直到我的一个有30 000个联系人的客户让我在这里要求解决方案, 由于30 000个联系人同步过程没有完成,他甚至无法访问他的存储库,因为我的应用程序和Android系统以并发方式运行。 感谢您提前帮助
以下代码是我使用的代码: 它返回一个包含所有联系人的列表,然后我在for循环中运行以获取所有联系人照片以显示它们,然后将列表发送到服务器以检查他们是否使用该应用程序。
public class Phoner {
public static void loadPhoneContacts(Context context,
final OnPhoneContactsLoadedListener listener) {
final List<Bundle> phoneContacts = new ArrayList<Bundle>();
final String[] PROJECTION = new String[] { ContactsContract.Data._ID,
ContactsContract.Data.DISPLAY_NAME,
ContactsContract.Data.PHOTO_URI,
ContactsContract.Data.LOOKUP_KEY,
ContactsContract.Contacts.HAS_PHONE_NUMBER,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Im.DATA };
final String SELECTION = "(" + ContactsContract.Data.MIMETYPE + "=\""
+ ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE
+ "\");
CursorLoader mCursorLoader = new CursorLoader(context,
ContactsContract.Data.CONTENT_URI, PROJECTION, SELECTION, null,
null);
mCursorLoader.registerListener(0, new OnLoadCompleteListener<Cursor>() {
@Override
public void onLoadComplete(Loader<Cursor> arg0, Cursor cursor) {
if (cursor == null) {
return;
}
while (cursor.moveToNext()) {
Bundle contact = new Bundle();
contact.putInt("phoneid", cursor.getInt(cursor
.getColumnIndex(ContactsContract.Data._ID)));
contact.putString(
"displayname",
cursor.getString(cursor
.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)));
contact.putString("photouri", cursor.getString(cursor
.getColumnIndex(ContactsContract.Data.PHOTO_URI)));
contact.putString("lookup", cursor.getString(cursor
.getColumnIndex(ContactsContract.Data.LOOKUP_KEY)));
phoneContacts.add(contact);
for循环如下: 此代码位于服务
中private void loadPhoneContacts() {
Phoner.loadPhoneContacts(getApplicationContext(),
new OnPhoneContactsLoadedListener() {
@Override
public void onPhoneContactsLoaded(List<Bundle> phoneContacts) {
for (Bundle phoneContact : phoneContacts) {
for (Account account : accounts) {
phoneContact
.getString("photouri");
phoneContact
.getString("displayname");
}
}
}
});
}
P.s:我听说过同步适配器,但我不知道它是否可以利用那么多的联系人。 感谢