SyncBaseInstrumentationpublic class SyncBaseInstrumentation extends InstrumentationTestCase If you would like to test sync a single provider with an
{@link InstrumentationTestCase}, this provides some of the boiler plate in {@link #setUp} and
{@link #tearDown}. |
Fields Summary |
---|
private android.content.Context | mTargetContext | android.content.ContentResolver | mContentResolver | private static final int | MAX_TIME_FOR_SYNC_IN_MINS |
Methods Summary |
---|
protected void | cancelSyncsandDisableAutoSync()
ContentResolver.setMasterSyncAutomatically(false);
ContentResolver.cancelSync(null /* all accounts */, null /* all authorities */);
| protected void | setUp()
super.setUp();
mTargetContext = getInstrumentation().getTargetContext();
mContentResolver = mTargetContext.getContentResolver();
| protected void | syncProvider(android.net.Uri uri, java.lang.String accountName, java.lang.String authority)Syncs the specified provider.
Bundle extras = new Bundle();
extras.putBoolean(ContentResolver.SYNC_EXTRAS_IGNORE_SETTINGS, true);
Account account = new Account(accountName, "com.google");
ContentResolver.requestSync(account, authority, extras);
long startTimeInMillis = SystemClock.elapsedRealtime();
long endTimeInMillis = startTimeInMillis + MAX_TIME_FOR_SYNC_IN_MINS * 60000;
int counter = 0;
// Making sure race condition does not occur when en entry have been removed from pending
// and active tables and loaded in memory (therefore sync might be still in progress)
while (counter < 2) {
// Sleep for 1 second.
Thread.sleep(1000);
// Finish test if time to sync has exceeded max time.
if (SystemClock.elapsedRealtime() > endTimeInMillis) {
break;
}
if (ContentResolver.isSyncActive(account, authority)) {
counter = 0;
continue;
}
counter++;
}
|
|