下面列出了android.app.job.JobParameters#getExtras ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public boolean onStartJob(JobParameters params) {
logd("PlatformSchedulerService started");
PersistableBundle extras = params.getExtras();
Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS));
if (requirements.checkRequirements(this)) {
logd("Requirements are met");
String serviceAction = extras.getString(KEY_SERVICE_ACTION);
String servicePackage = extras.getString(KEY_SERVICE_PACKAGE);
Intent intent =
new Intent(Assertions.checkNotNull(serviceAction)).setPackage(servicePackage);
logd("Starting service action: " + serviceAction + " package: " + servicePackage);
Util.startForegroundService(this, intent);
} else {
logd("Requirements are not met");
jobFinished(params, /* needsReschedule */ true);
}
return false;
}
@Override
public boolean onStartJob(JobParameters params) {
logd("PlatformSchedulerService started");
PersistableBundle extras = params.getExtras();
Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS));
if (requirements.checkRequirements(this)) {
logd("Requirements are met");
String serviceAction = extras.getString(KEY_SERVICE_ACTION);
String servicePackage = extras.getString(KEY_SERVICE_PACKAGE);
Intent intent = new Intent(serviceAction).setPackage(servicePackage);
logd("Starting service action: " + serviceAction + " package: " + servicePackage);
Util.startForegroundService(this, intent);
} else {
logd("Requirements are not met");
jobFinished(params, /* needsReschedule */ true);
}
return false;
}
@Override
public boolean onStartJob(JobParameters params) {
logd("PlatformSchedulerService started");
PersistableBundle extras = params.getExtras();
Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS));
if (requirements.checkRequirements(this)) {
logd("Requirements are met");
String serviceAction = extras.getString(KEY_SERVICE_ACTION);
String servicePackage = extras.getString(KEY_SERVICE_PACKAGE);
Intent intent = new Intent(serviceAction).setPackage(servicePackage);
logd("Starting service action: " + serviceAction + " package: " + servicePackage);
Util.startForegroundService(this, intent);
} else {
logd("Requirements are not met");
jobFinished(params, /* needsReschedule */ true);
}
return false;
}
@Override
public boolean onStartJob(JobParameters params) {
PersistableBundle extras = params.getExtras();
Context context = getApplicationContext();
if (isApplicationRunning(context)) {
if (callbackMethodChannel != null) {
callbackMethodChannel.invokeMethod("firedWhileApplicationRunning", null);
}
} else {
FlutterNativeView nativeView = new FlutterNativeView(context);
if (AndroidJobScheduler.pluginRegistrantCallback != null) {
AndroidJobScheduler.pluginRegistrantCallback.registerWith(nativeView.getPluginRegistry());
}
nativeView.runFromBundle(FlutterMain.findAppBundlePath(context), null,
extras.getString(B_KEY_DART_CB), true);
}
if (!extras.containsKey(B_KEY_SCHEDULE_ONCE)) {
AndroidJobScheduler.scheduleEvery(getApplicationContext(), AndroidJobSchedulerUtils.persistableBundleToJobInfo(extras));
}
jobFinished(params, false);
return true;
}
@Override
public boolean onStartJob(final JobParameters params) {
PersistableBundle extras = params.getExtras();
final String taskId = extras.getString(BackgroundFetchConfig.FIELD_TASK_ID);
CompletionHandler completionHandler = new CompletionHandler() {
@Override
public void finish() {
Log.d(BackgroundFetch.TAG, "- jobFinished");
jobFinished(params, false);
}
};
BGTask task = new BGTask(taskId, completionHandler, params.getJobId());
BackgroundFetch.getInstance(getApplicationContext()).onFetch(task);
return true;
}
/**
* Called when a Notification has been interacted with by the user. If we can verify that
* the Intent has a notification Id, start Chrome (if needed) on the UI thread.
*
* We get a wakelock for our process for the duration of this method.
*
* @return True if there is more work to be done to handle the job, to signal we would like our
* wakelock extended until we call {@link #jobFinished}. False if we have finished handling the
* job.
*/
@Override
public boolean onStartJob(final JobParameters params) {
PersistableBundle extras = params.getExtras();
if (!extras.containsKey(NotificationConstants.EXTRA_NOTIFICATION_ID)
|| !extras.containsKey(NotificationConstants.EXTRA_NOTIFICATION_INFO_ORIGIN)
|| !extras.containsKey(NotificationConstants.EXTRA_NOTIFICATION_INFO_TAG)) {
return false;
}
Intent intent =
new Intent(extras.getString(NotificationConstants.EXTRA_NOTIFICATION_ACTION));
intent.putExtras(new Bundle(extras));
ThreadUtils.assertOnUiThread();
NotificationService.dispatchIntentOnUIThread(this, intent);
// TODO(crbug.com/685197): Return true here and call jobFinished to release the wake
// lock only after the event has been completely handled by the service worker.
return false;
}
@Override
public boolean onStartJob(JobParameters params) {
logd("PlatformSchedulerService started");
PersistableBundle extras = params.getExtras();
Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS));
if (requirements.checkRequirements(this)) {
logd("Requirements are met");
String serviceAction = extras.getString(KEY_SERVICE_ACTION);
String servicePackage = extras.getString(KEY_SERVICE_PACKAGE);
Intent intent =
new Intent(Assertions.checkNotNull(serviceAction)).setPackage(servicePackage);
logd("Starting service action: " + serviceAction + " package: " + servicePackage);
Util.startForegroundService(this, intent);
} else {
logd("Requirements are not met");
jobFinished(params, /* needsReschedule */ true);
}
return false;
}
@Override
public boolean onStartJob(JobParameters params) {
logd("PlatformSchedulerService started");
PersistableBundle extras = params.getExtras();
Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS));
if (requirements.checkRequirements(this)) {
logd("Requirements are met");
String serviceAction = extras.getString(KEY_SERVICE_ACTION);
String servicePackage = extras.getString(KEY_SERVICE_PACKAGE);
Intent intent =
new Intent(Assertions.checkNotNull(serviceAction)).setPackage(servicePackage);
logd("Starting service action: " + serviceAction + " package: " + servicePackage);
Util.startForegroundService(this, intent);
} else {
logd("Requirements are not met");
jobFinished(params, /* needsReschedule */ true);
}
return false;
}
/**
* Retrieves the {@link TaskParameters} from the {@link JobParameters}, which are passed as
* one of the keys. Only values valid for {@link android.os.BaseBundle} are supported, and other
* values are stripped at the time when the task is scheduled.
*
* @param jobParameters the {@link JobParameters} to extract the {@link TaskParameters} from.
* @return the {@link TaskParameters} for the current job.
*/
static TaskParameters getTaskParametersFromJobParameters(JobParameters jobParameters) {
TaskParameters.Builder builder = TaskParameters.create(jobParameters.getJobId());
PersistableBundle jobExtras = jobParameters.getExtras();
PersistableBundle persistableTaskExtras =
jobExtras.getPersistableBundle(BACKGROUND_TASK_EXTRAS_KEY);
Bundle taskExtras = new Bundle();
taskExtras.putAll(persistableTaskExtras);
builder.addExtras(taskExtras);
return builder.build();
}
private static String getBackgroundTaskClassFromJobParameters(JobParameters jobParameters) {
PersistableBundle extras = jobParameters.getExtras();
if (extras == null) return null;
return extras.getString(BACKGROUND_TASK_CLASS_KEY);
}