public abstract class HeadlessJsTaskService extends android.app.Service implements HeadlessJsTaskEventListener
getTaskConfig(android.content.Intent), which is called for every onStartCommand(android.content.Intent, int, int). The result, if not null, is used to run a JS task.
If you need more fine-grained control over how tasks are run, you can override onStartCommand(android.content.Intent, int, int) and call startTask(com.facebook.react.jstasks.HeadlessJsTaskConfig) depending on your custom logic.
If you're starting a HeadlessJsTaskService from a BroadcastReceiver (e.g.
handling push notifications), make sure to call acquireWakeLockNow(android.content.Context) before returning from
BroadcastReceiver.onReceive(android.content.Context, android.content.Intent), to make sure the device doesn't go to sleep before the
service is started.
START_CONTINUATION_MASK, START_FLAG_REDELIVERY, START_FLAG_RETRY, START_NOT_STICKY, START_REDELIVER_INTENT, START_STICKY, START_STICKY_COMPATIBILITY, STOP_FOREGROUND_DETACH, STOP_FOREGROUND_REMOVEACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ALARM_SERVICE, APP_OPS_SERVICE, APPWIDGET_SERVICE, AUDIO_SERVICE, BATTERY_SERVICE, BIND_ABOVE_CLIENT, BIND_ADJUST_WITH_ACTIVITY, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_EXTERNAL_SERVICE, BIND_IMPORTANT, BIND_NOT_FOREGROUND, BIND_WAIVE_PRIORITY, BLUETOOTH_SERVICE, CAMERA_SERVICE, CAPTIONING_SERVICE, CARRIER_CONFIG_SERVICE, CLIPBOARD_SERVICE, COMPANION_DEVICE_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, CROSS_PROFILE_APPS_SERVICE, DEVICE_POLICY_SERVICE, DISPLAY_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, EUICC_SERVICE, FINGERPRINT_SERVICE, HARDWARE_PROPERTIES_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, IPSEC_SERVICE, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCATION_SERVICE, MEDIA_PROJECTION_SERVICE, MEDIA_ROUTER_SERVICE, MEDIA_SESSION_SERVICE, MIDI_SERVICE, MODE_APPEND, MODE_ENABLE_WRITE_AHEAD_LOGGING, MODE_MULTI_PROCESS, MODE_NO_LOCALIZED_COLLATORS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NETWORK_STATS_SERVICE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, POWER_SERVICE, PRINT_SERVICE, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, SHORTCUT_SERVICE, STORAGE_SERVICE, STORAGE_STATS_SERVICE, SYSTEM_HEALTH_SERVICE, TELECOM_SERVICE, TELEPHONY_SERVICE, TELEPHONY_SUBSCRIPTION_SERVICE, TEXT_CLASSIFICATION_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_INPUT_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_SERVICE, WALLPAPER_SERVICE, WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_RTT_RANGING_SERVICE, WIFI_SERVICE, WINDOW_SERVICE| Constructor and Description |
|---|
HeadlessJsTaskService() |
| Modifier and Type | Method and Description |
|---|---|
static void |
acquireWakeLockNow(android.content.Context context)
Acquire a wake lock to ensure the device doesn't go to sleep while processing background tasks.
|
protected ReactNativeHost |
getReactNativeHost()
Get the
ReactNativeHost used by this app. |
protected HeadlessJsTaskConfig |
getTaskConfig(android.content.Intent intent)
Called from
onStartCommand(android.content.Intent, int, int) to create a HeadlessJsTaskConfig for this intent. |
android.os.IBinder |
onBind(android.content.Intent intent) |
void |
onDestroy() |
void |
onHeadlessJsTaskFinish(int taskId)
Called when a JS task finishes (i.e.
|
void |
onHeadlessJsTaskStart(int taskId)
Called when a JS task is started, on the UI thread.
|
int |
onStartCommand(android.content.Intent intent,
int flags,
int startId) |
protected void |
startTask(HeadlessJsTaskConfig taskConfig)
Start a task.
|
dump, getApplication, onConfigurationChanged, onCreate, onLowMemory, onRebind, onStart, onTaskRemoved, onTrimMemory, onUnbind, startForeground, stopForeground, stopForeground, stopSelf, stopSelf, stopSelfResultattachBaseContext, bindService, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingPermission, checkCallingUriPermission, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, clearWallpaper, createConfigurationContext, createContextForSplit, createDeviceProtectedStorageContext, createDisplayContext, createPackageContext, databaseList, deleteDatabase, deleteFile, deleteSharedPreferences, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAssets, getBaseContext, getCacheDir, getClassLoader, getCodeCacheDir, getContentResolver, getDatabasePath, getDataDir, getDir, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainExecutor, getMainLooper, getNoBackupFilesDir, getObbDir, getObbDirs, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getResources, getSharedPreferences, getSystemService, getSystemServiceName, getTheme, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isDeviceProtectedStorage, isRestricted, moveDatabaseFrom, moveSharedPreferencesFrom, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerReceiver, registerReceiver, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeUriPermission, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setTheme, setWallpaper, setWallpaper, startActivities, startActivities, startActivity, startActivity, startForegroundService, startInstrumentation, startIntentSender, startIntentSender, startService, stopService, unbindService, unregisterReceiverpublic int onStartCommand(android.content.Intent intent,
int flags,
int startId)
onStartCommand in class android.app.Serviceprotected HeadlessJsTaskConfig getTaskConfig(android.content.Intent intent)
onStartCommand(android.content.Intent, int, int) to create a HeadlessJsTaskConfig for this intent.intent - the Intent received in onStartCommand(android.content.Intent, int, int).HeadlessJsTaskConfig to be used with startTask(com.facebook.react.jstasks.HeadlessJsTaskConfig), or null to
ignore this command.public static void acquireWakeLockNow(android.content.Context context)
public android.os.IBinder onBind(android.content.Intent intent)
onBind in class android.app.Serviceprotected void startTask(HeadlessJsTaskConfig taskConfig)
Has to be called on the UI thread.
taskConfig - describes what task to start and the parameters to pass to itpublic void onDestroy()
onDestroy in class android.app.Servicepublic void onHeadlessJsTaskStart(int taskId)
HeadlessJsTaskEventListeneronHeadlessJsTaskStart in interface HeadlessJsTaskEventListenertaskId - the unique identifier of this task instancepublic void onHeadlessJsTaskFinish(int taskId)
HeadlessJsTaskEventListenerHeadlessJsTaskSupportModule#notifyTaskFinished is called, or when it times out), on the UI
thread.onHeadlessJsTaskFinish in interface HeadlessJsTaskEventListenerprotected ReactNativeHost getReactNativeHost()
ReactNativeHost used by this app. By default, assumes Service.getApplication()
is an instance of ReactApplication and calls ReactApplication.getReactNativeHost(). Override this method if your application class does not
implement ReactApplication or you simply have a different mechanism for storing a
ReactNativeHost, e.g. as a static field somewhere.