private void fillContentValues(ContentValues contentValues) { contentValues.put(JobStorage.COLUMN_ID, mId); contentValues.put(JobStorage.COLUMN_TAG, mTag); contentValues.put(JobStorage.COLUMN_START_MS, mStartMs); contentValues.put(JobStorage.COLUMN_END_MS, mEndMs); contentValues.put(JobStorage.COLUMN_BACKOFF_MS, mBackoffMs); contentValues.put(JobStorage.COLUMN_BACKOFF_POLICY, mBackoffPolicy.toString()); contentValues.put(JobStorage.COLUMN_INTERVAL_MS, mIntervalMs); contentValues.put(JobStorage.COLUMN_FLEX_MS, mFlexMs); contentValues.put(JobStorage.COLUMN_REQUIREMENTS_ENFORCED, mRequirementsEnforced); contentValues.put(JobStorage.COLUMN_REQUIRES_CHARGING, mRequiresCharging); contentValues.put(JobStorage.COLUMN_REQUIRES_DEVICE_IDLE, mRequiresDeviceIdle); contentValues.put(JobStorage.COLUMN_REQUIRES_BATTERY_NOT_LOW, mRequiresBatteryNotLow); contentValues.put(JobStorage.COLUMN_REQUIRES_STORAGE_NOT_LOW, mRequiresStorageNotLow); contentValues.put(JobStorage.COLUMN_EXACT, mExact); contentValues.put(JobStorage.COLUMN_NETWORK_TYPE, mNetworkType.toString()); if (mExtras != null) { contentValues.put(JobStorage.COLUMN_EXTRAS, mExtras.saveToXml()); } else if (!TextUtils.isEmpty(mExtrasXml)) { contentValues.put(JobStorage.COLUMN_EXTRAS, mExtrasXml); } contentValues.put(JobStorage.COLUMN_TRANSIENT, mTransient); }
@SuppressWarnings("unchecked") private Builder(Cursor cursor) { mId = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_ID)); mTag = cursor.getString(cursor.getColumnIndex(JobStorage.COLUMN_TAG)); mStartMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_START_MS)); mEndMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_END_MS)); mBackoffMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_BACKOFF_MS)); try { mBackoffPolicy = BackoffPolicy.valueOf(cursor.getString(cursor.getColumnIndex(JobStorage.COLUMN_BACKOFF_POLICY))); } catch (Throwable t) { CAT.e(t); // https://gist.github.com/vRallev/574563f0e3fe636b19a7 mBackoffPolicy = DEFAULT_BACKOFF_POLICY; } mIntervalMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_INTERVAL_MS)); mFlexMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_FLEX_MS)); mRequirementsEnforced = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIREMENTS_ENFORCED)) > 0; mRequiresCharging = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIRES_CHARGING)) > 0; mRequiresDeviceIdle = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIRES_DEVICE_IDLE)) > 0; mRequiresBatteryNotLow = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIRES_BATTERY_NOT_LOW)) > 0; mRequiresStorageNotLow = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIRES_STORAGE_NOT_LOW)) > 0; mExact = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_EXACT)) > 0; try { mNetworkType = NetworkType.valueOf(cursor.getString(cursor.getColumnIndex(JobStorage.COLUMN_NETWORK_TYPE))); } catch (Throwable t) { CAT.e(t); // https://gist.github.com/vRallev/574563f0e3fe636b19a7 mNetworkType = DEFAULT_NETWORK_TYPE; } mExtrasXml = cursor.getString(cursor.getColumnIndex(JobStorage.COLUMN_EXTRAS)); mTransient = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_TRANSIENT)) > 0; }
throw new IllegalArgumentException("Can't call setExecutionWindow() on a periodic job."); if (mIntervalMs > 0 && (mBackoffMs != DEFAULT_BACKOFF_MS || !DEFAULT_BACKOFF_POLICY.equals(mBackoffPolicy))) { throw new IllegalArgumentException("A periodic job will not respect any back-off policy, so calling " + "setBackoffCriteria() with setPeriodic() is an error.");
@SuppressWarnings("unchecked") private Builder(Cursor cursor) { mId = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_ID)); mTag = cursor.getString(cursor.getColumnIndex(JobStorage.COLUMN_TAG)); mStartMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_START_MS)); mEndMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_END_MS)); mBackoffMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_BACKOFF_MS)); try { mBackoffPolicy = BackoffPolicy.valueOf(cursor.getString(cursor.getColumnIndex(JobStorage.COLUMN_BACKOFF_POLICY))); } catch (Throwable t) { CAT.e(t); // https://gist.github.com/vRallev/574563f0e3fe636b19a7 mBackoffPolicy = DEFAULT_BACKOFF_POLICY; } mIntervalMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_INTERVAL_MS)); mFlexMs = cursor.getLong(cursor.getColumnIndex(JobStorage.COLUMN_FLEX_MS)); mRequirementsEnforced = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIREMENTS_ENFORCED)) > 0; mRequiresCharging = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIRES_CHARGING)) > 0; mRequiresDeviceIdle = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIRES_DEVICE_IDLE)) > 0; mRequiresBatteryNotLow = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIRES_BATTERY_NOT_LOW)) > 0; mRequiresStorageNotLow = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_REQUIRES_STORAGE_NOT_LOW)) > 0; mExact = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_EXACT)) > 0; try { mNetworkType = NetworkType.valueOf(cursor.getString(cursor.getColumnIndex(JobStorage.COLUMN_NETWORK_TYPE))); } catch (Throwable t) { CAT.e(t); // https://gist.github.com/vRallev/574563f0e3fe636b19a7 mNetworkType = DEFAULT_NETWORK_TYPE; } mExtrasXml = cursor.getString(cursor.getColumnIndex(JobStorage.COLUMN_EXTRAS)); mTransient = cursor.getInt(cursor.getColumnIndex(JobStorage.COLUMN_TRANSIENT)) > 0; }
private void fillContentValues(ContentValues contentValues) { contentValues.put(JobStorage.COLUMN_ID, mId); contentValues.put(JobStorage.COLUMN_TAG, mTag); contentValues.put(JobStorage.COLUMN_START_MS, mStartMs); contentValues.put(JobStorage.COLUMN_END_MS, mEndMs); contentValues.put(JobStorage.COLUMN_BACKOFF_MS, mBackoffMs); contentValues.put(JobStorage.COLUMN_BACKOFF_POLICY, mBackoffPolicy.toString()); contentValues.put(JobStorage.COLUMN_INTERVAL_MS, mIntervalMs); contentValues.put(JobStorage.COLUMN_FLEX_MS, mFlexMs); contentValues.put(JobStorage.COLUMN_REQUIREMENTS_ENFORCED, mRequirementsEnforced); contentValues.put(JobStorage.COLUMN_REQUIRES_CHARGING, mRequiresCharging); contentValues.put(JobStorage.COLUMN_REQUIRES_DEVICE_IDLE, mRequiresDeviceIdle); contentValues.put(JobStorage.COLUMN_REQUIRES_BATTERY_NOT_LOW, mRequiresBatteryNotLow); contentValues.put(JobStorage.COLUMN_REQUIRES_STORAGE_NOT_LOW, mRequiresStorageNotLow); contentValues.put(JobStorage.COLUMN_EXACT, mExact); contentValues.put(JobStorage.COLUMN_NETWORK_TYPE, mNetworkType.toString()); if (mExtras != null) { contentValues.put(JobStorage.COLUMN_EXTRAS, mExtras.saveToXml()); } else if (!TextUtils.isEmpty(mExtrasXml)) { contentValues.put(JobStorage.COLUMN_EXTRAS, mExtrasXml); } contentValues.put(JobStorage.COLUMN_TRANSIENT, mTransient); }
throw new IllegalArgumentException("Can't call setExecutionWindow() on a periodic job."); if (mIntervalMs > 0 && (mBackoffMs != DEFAULT_BACKOFF_MS || !DEFAULT_BACKOFF_POLICY.equals(mBackoffPolicy))) { throw new IllegalArgumentException("A periodic job will not respect any back-off policy, so calling " + "setBackoffCriteria() with setPeriodic() is an error.");
protected ContentValues createBaseContentValues(int id) { ContentValues contentValues = new ContentValues(); contentValues.put(JobStorage.COLUMN_ID, id); contentValues.put(JobStorage.COLUMN_TAG, "Tag"); contentValues.put(JobStorage.COLUMN_START_MS, -1L); contentValues.put(JobStorage.COLUMN_END_MS, -1L); contentValues.put(JobStorage.COLUMN_BACKOFF_MS, JobRequest.DEFAULT_BACKOFF_MS); contentValues.put(JobStorage.COLUMN_BACKOFF_POLICY, JobRequest.DEFAULT_BACKOFF_POLICY.toString()); contentValues.put(JobStorage.COLUMN_INTERVAL_MS, 0L); contentValues.put(JobStorage.COLUMN_REQUIREMENTS_ENFORCED, false); contentValues.put(JobStorage.COLUMN_REQUIRES_CHARGING, false); contentValues.put(JobStorage.COLUMN_REQUIRES_DEVICE_IDLE, false); contentValues.put(JobStorage.COLUMN_EXACT, false); contentValues.put(JobStorage.COLUMN_NETWORK_TYPE, JobRequest.DEFAULT_NETWORK_TYPE.toString()); contentValues.put(JobStorage.COLUMN_EXTRAS, new PersistableBundleCompat().saveToXml()); contentValues.put("persisted", false); contentValues.put(JobStorage.COLUMN_NUM_FAILURES, 0); contentValues.put(JobStorage.COLUMN_SCHEDULED_AT, System.currentTimeMillis()); return contentValues; } }