mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
722feeb02b
Summary: Changelog: [General] [Fixed] - License header cleanup Reviewed By: yungsters Differential Revision: D17952695 fbshipit-source-id: 81aa607612ba1357ef7814ef20371335151afe7e
122 lines
4.6 KiB
Java
122 lines
4.6 KiB
Java
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
package com.facebook.react.jstasks;
|
|
|
|
import com.facebook.react.bridge.WritableMap;
|
|
|
|
/** Class that holds the various parameters needed to start a JS task. */
|
|
public class HeadlessJsTaskConfig {
|
|
private final String mTaskKey;
|
|
private final WritableMap mData;
|
|
private final long mTimeout;
|
|
private final boolean mAllowedInForeground;
|
|
private final HeadlessJsTaskRetryPolicy mRetryPolicy;
|
|
|
|
/**
|
|
* Create a HeadlessJsTaskConfig. Equivalent to calling {@link #HeadlessJsTaskConfig(String,
|
|
* WritableMap, long, boolean)} with no timeout (0) and {@code false} for {@code
|
|
* allowedInBackground}.
|
|
*/
|
|
public HeadlessJsTaskConfig(String taskKey, WritableMap data) {
|
|
this(taskKey, data, 0, false);
|
|
}
|
|
|
|
/**
|
|
* Create a HeadlessJsTaskConfig. Equivalent to calling {@link #HeadlessJsTaskConfig(String,
|
|
* WritableMap, long, boolean)} with {@code false} for {@code allowedInBackground}.
|
|
*/
|
|
public HeadlessJsTaskConfig(String taskKey, WritableMap data, long timeout) {
|
|
this(taskKey, data, timeout, false);
|
|
}
|
|
|
|
/**
|
|
* Create a HeadlessJsTaskConfig.
|
|
*
|
|
* @param taskKey the key for the JS task to execute. This is the same key that you call {@code
|
|
* AppRegistry.registerTask} with in JS.
|
|
* @param data a map of parameters passed to the JS task executor.
|
|
* @param timeout the amount of time (in ms) after which the React instance should be terminated
|
|
* regardless of whether the task has completed or not. This is meant as a safeguard against
|
|
* accidentally keeping the device awake for long periods of time because JS crashed or some
|
|
* request timed out. A value of 0 means no timeout (should only be used for long-running
|
|
* tasks such as music playback).
|
|
* @param allowedInForeground whether to allow this task to run while the app is in the foreground
|
|
* (i.e. there is a host in resumed mode for the current ReactContext). Only set this to true
|
|
* if you really need it. Note that tasks run in the same JS thread as UI code, so doing
|
|
* expensive operations would degrade user experience.
|
|
*/
|
|
public HeadlessJsTaskConfig(
|
|
String taskKey, WritableMap data, long timeout, boolean allowedInForeground) {
|
|
this(taskKey, data, timeout, allowedInForeground, NoRetryPolicy.INSTANCE);
|
|
}
|
|
|
|
/**
|
|
* Create a HeadlessJsTaskConfig.
|
|
*
|
|
* @param taskKey the key for the JS task to execute. This is the same key that you call {@code
|
|
* AppRegistry.registerTask} with in JS.
|
|
* @param data a map of parameters passed to the JS task executor.
|
|
* @param timeout the amount of time (in ms) after which the React instance should be terminated
|
|
* regardless of whether the task has completed or not. This is meant as a safeguard against
|
|
* accidentally keeping the device awake for long periods of time because JS crashed or some
|
|
* request timed out. A value of 0 means no timeout (should only be used for long-running
|
|
* tasks such as music playback).
|
|
* @param allowedInForeground whether to allow this task to run while the app is in the foreground
|
|
* (i.e. there is a host in resumed mode for the current ReactContext). Only set this to true
|
|
* if you really need it. Note that tasks run in the same JS thread as UI code, so doing
|
|
* expensive operations would degrade user experience.
|
|
* @param retryPolicy the number of times & delays the task should be retried on error.
|
|
*/
|
|
public HeadlessJsTaskConfig(
|
|
String taskKey,
|
|
WritableMap data,
|
|
long timeout,
|
|
boolean allowedInForeground,
|
|
HeadlessJsTaskRetryPolicy retryPolicy) {
|
|
mTaskKey = taskKey;
|
|
mData = data;
|
|
mTimeout = timeout;
|
|
mAllowedInForeground = allowedInForeground;
|
|
mRetryPolicy = retryPolicy;
|
|
}
|
|
|
|
public HeadlessJsTaskConfig(HeadlessJsTaskConfig source) {
|
|
mTaskKey = source.mTaskKey;
|
|
mData = source.mData.copy();
|
|
mTimeout = source.mTimeout;
|
|
mAllowedInForeground = source.mAllowedInForeground;
|
|
|
|
final HeadlessJsTaskRetryPolicy retryPolicy = source.mRetryPolicy;
|
|
if (retryPolicy != null) {
|
|
mRetryPolicy = retryPolicy.copy();
|
|
} else {
|
|
mRetryPolicy = null;
|
|
}
|
|
}
|
|
|
|
/* package */ String getTaskKey() {
|
|
return mTaskKey;
|
|
}
|
|
|
|
/* package */ WritableMap getData() {
|
|
return mData;
|
|
}
|
|
|
|
/* package */ long getTimeout() {
|
|
return mTimeout;
|
|
}
|
|
|
|
/* package */ boolean isAllowedInForeground() {
|
|
return mAllowedInForeground;
|
|
}
|
|
|
|
/* package */ HeadlessJsTaskRetryPolicy getRetryPolicy() {
|
|
return mRetryPolicy;
|
|
}
|
|
}
|