// Copyright 2004-present Facebook. All Rights Reserved.
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;
/**
* 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) {
mTaskKey = taskKey;
mData = data;
mTimeout = timeout;
mAllowedInForeground = allowedInForeground;
}
/* package */ String getTaskKey() {
return mTaskKey;
}
/* package */ WritableMap getData() {
return mData;
}
/* package */ long getTimeout() {
return mTimeout;
}
/* package */ boolean isAllowedInForeground() {
return mAllowedInForeground;
}
}