下面列出了android.content.ContentProviderClient#bulkInsert ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void syncEvents(ContentProviderClient provider, String cookie) {
try {
RequestQueue requestQueue = GutenbergApplication.from(getContext()).getRequestQueue();
JSONArray events = getEvents(requestQueue, cookie);
Pair<String[], ContentValues[]> pair = parseEvents(events);
String[] eventIds = pair.first;
provider.bulkInsert(Table.EVENT.getBaseUri(), pair.second);
ArrayList<ContentProviderOperation> operations = new ArrayList<>();
operations.add(ContentProviderOperation.newDelete(Table.EVENT.getBaseUri())
.withSelection(Table.Event.ID + " NOT IN ('" +
TextUtils.join("', '", eventIds) + "')", null)
.build());
operations.add(ContentProviderOperation.newDelete(Table.ATTENDEE.getBaseUri())
.withSelection(Table.Attendee.EVENT_ID + " NOT IN ('" +
TextUtils.join("', '", eventIds) + "')", null)
.build());
provider.applyBatch(operations);
for (String eventId : eventIds) {
JSONArray attendees = getAttendees(requestQueue, eventId, cookie);
provider.bulkInsert(
Table.ATTENDEE.getBaseUri(), parseAttendees(eventId, attendees));
}
Log.d(TAG, eventIds.length + " event(s) synced.");
} catch (ExecutionException | InterruptedException | JSONException | RemoteException |
OperationApplicationException e) {
Log.e(TAG, "Error performing sync.", e);
}
}
public static <T> int insertAll(ContentProviderClient providerClient, List<T> dataModelObjects) throws RemoteException {
if (dataModelObjects == null || dataModelObjects.isEmpty())
return 0;
TableDetails tableDetails = findTableDetails(dataModelObjects.get(0).getClass());
Uri insertUri = UriMatcherHelper.generateItemUriBuilder(tableDetails).build();
ContentValues[] values = new ContentValues[dataModelObjects.size()];
for (int i = 0; i < dataModelObjects.size(); i++) {
values[i] = ModelInflater.deflate(tableDetails, dataModelObjects.get(i));
}
return providerClient.bulkInsert(insertUri, values);
}
@Override
public int bulkInsert(Uri uri, ContentValues[] values) {
String targetAuthority = uri.getQueryParameter(Env.EXTRA_TARGET_AUTHORITY);
if (!TextUtils.isEmpty(targetAuthority) && !TextUtils.equals(targetAuthority, uri.getAuthority())) {
ContentProviderClient client = getContentProviderClient(targetAuthority);
try {
return client.bulkInsert(buildNewUri(uri, targetAuthority), values);
} catch (RemoteException e) {
handleExpcetion(e);
}
}
return super.bulkInsert(uri, values);
}