Android一键清除某个应用下的数据,我这里是针对android自带通讯录的数据清除,当初我用了几个方式来清理数据库,当初试用的数据估计有1000个联系人吧,当然跟自己存联系人的方式有关系,我这里用RawContacts表存联系人的基本信息,用data存联系人的详细信息,group是来存分类:
方式1:
把ContactsContract.CALLER_IS_SYNCADAPTER设置为true就能删除通讯录里的数据,
Uri uri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
getContentResolver().delete(uri,null,null);
this.getContentResolver().delete(Data.CONTENT_URI.buildUpon()
.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER,"true").build(), null
, null);
getContentResolver().delete(ContactsContract.Data.CONTENT_URI,null,null);
uri = ContactsContract.Groups.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
getContentResolver().delete(uri,null,null);
花费时间在10秒左右,
方式2:
Cursor contactsCur = SdmLoginActivity.this.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while(contactsCur.moveToNext()){
//获取ID
String rawId = contactsCur.getString(contactsCur.getColumnIndex(ContactsContract.Contacts._ID));
//删除
String where = ContactsContract.Data._ID + " =?";
String[] whereparams = new String[]{rawId};
getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI, where, whereparams);
}
if (contactsCur!=null) {
contactsCur.close();
contactsCur = null;
}
耗费时间在20多秒左右,比上一种还慢.
方式3是在这里推荐的,在设置里有一个清除各个应用数据的地方,一般是设置->应用->选中自己的应用->清除数据就能清,该方式的耗费时间普遍在100毫秒左右,用7000多数据测花费时间也在100毫秒左右