List of usage examples for android.os PersistableBundle PersistableBundle
public PersistableBundle()
From source file:com.google.android.media.tv.companionlibrary.EpgSyncJobService.java
/** * Initializes a job that will periodically update the app's channels and programs. * * @param context Application's context. * @param inputId Component name for the app's TvInputService. This can be received through an * Intent extra parameter {@link TvInputInfo#EXTRA_INPUT_ID}. * @param jobServiceComponent The {@link EpgSyncJobService} component name that will run. * @param fullSyncPeriod The period between when the job will run a full background sync in * milliseconds.//w w w . jav a 2 s .c o m * @param syncDuration The duration of EPG content to fetch in milliseconds. For a manual sync, * this should be relatively short. For a background sync this should be long. */ public static void setUpPeriodicSync(Context context, String inputId, ComponentName jobServiceComponent, long fullSyncPeriod, long syncDuration) { if (jobServiceComponent.getClass().isAssignableFrom(EpgSyncJobService.class)) { throw new IllegalArgumentException("This class does not extend EpgSyncJobService"); } PersistableBundle persistableBundle = new PersistableBundle(); persistableBundle.putString(EpgSyncJobService.BUNDLE_KEY_INPUT_ID, inputId); persistableBundle.putLong(EpgSyncJobService.BUNDLE_KEY_SYNC_PERIOD, syncDuration); JobInfo.Builder builder = new JobInfo.Builder(PERIODIC_SYNC_JOB_ID, jobServiceComponent); JobInfo jobInfo = builder.setExtras(persistableBundle).setPeriodic(fullSyncPeriod).setPersisted(true) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).build(); scheduleJob(context, jobInfo); if (DEBUG) { Log.d(TAG, "Job has been scheduled for every " + fullSyncPeriod + "ms"); } }
From source file:com.owncloud.android.files.services.TransferRequester.java
/** * Schedule a future transfer of an upload, to be done when a connection via an unmetered network (free Wifi) * is available.//from w ww. j a v a 2 s. c om * * @param context Caller {@link Context}. * @param scheduledRetryService Class of the appropriate retry service, either to retry downloads * or to retry uploads. * @param jobId Identifier to set to the retry job. * @param accountName Local name of the OC account where the upload will be retried. * @param remotePath Full path of the file to upload, relative to root of the OC account. */ private boolean scheduleTransfer(Context context, Class<?> scheduledRetryService, int jobId, String accountName, String remotePath) { // JobShceduler requires Android >= 5.0 ; do not remove this protection while minSdkVersion is lower if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { return false; } ComponentName serviceComponent = new ComponentName(context, scheduledRetryService); JobInfo.Builder builder = new JobInfo.Builder(jobId, serviceComponent); int networkType = getRequiredNetworkType(context, accountName, remotePath); // require network type (Wifi or Wifi and cellular) builder.setRequiredNetworkType(networkType); // Persist job and prevent it from being deleted after a device restart builder.setPersisted(true); // Extra data PersistableBundle extras = new PersistableBundle(); extras.putString(Extras.EXTRA_REMOTE_PATH, remotePath); extras.putString(Extras.EXTRA_ACCOUNT_NAME, accountName); builder.setExtras(extras); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(builder.build()); return true; }
From source file:com.google.android.media.tv.companionlibrary.EpgSyncJobService.java
/** * Manually requests a job to run now./*w w w .j a v a2s. co m*/ * * To check the current status of the sync, register a {@link android.content.BroadcastReceiver} * with an {@link android.content.IntentFilter} which checks for the action * {@link #ACTION_SYNC_STATUS_CHANGED}. * <p /> * The sync status is an extra parameter in the {@link Intent} with key * {@link #SYNC_STATUS}. The sync status is either {@link #SYNC_STARTED} or * {@link #SYNC_FINISHED}. * <p /> * Check that the value of {@link #BUNDLE_KEY_INPUT_ID} matches your * {@link android.media.tv.TvInputService}. If you're calling this from your setup activity, * you can get the extra parameter {@link TvInputInfo#EXTRA_INPUT_ID}. * <p /> * @param context Application's context. * @param inputId Component name for the app's TvInputService. This can be received through an * Intent extra parameter {@link TvInputInfo#EXTRA_INPUT_ID}. * @param syncDuration The duration of EPG content to fetch in milliseconds. For a manual sync, * this should be relatively short. For a background sync this should be long. * @param jobServiceComponent The {@link EpgSyncJobService} class that will run. */ public static void requestImmediateSync(Context context, String inputId, long syncDuration, ComponentName jobServiceComponent) { if (jobServiceComponent.getClass().isAssignableFrom(EpgSyncJobService.class)) { throw new IllegalArgumentException("This class does not extend EpgSyncJobService"); } PersistableBundle persistableBundle = new PersistableBundle(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { persistableBundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); persistableBundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); } persistableBundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); persistableBundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); persistableBundle.putString(EpgSyncJobService.BUNDLE_KEY_INPUT_ID, inputId); persistableBundle.putLong(EpgSyncJobService.BUNDLE_KEY_SYNC_PERIOD, syncDuration); JobInfo.Builder builder = new JobInfo.Builder(REQUEST_SYNC_JOB_ID, jobServiceComponent); JobInfo jobInfo = builder.setExtras(persistableBundle) .setOverrideDeadline(EpgSyncJobService.OVERRIDE_DEADLINE_MILLIS) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).build(); scheduleJob(context, jobInfo); if (DEBUG) { Log.d(TAG, "Single job scheduled"); } }