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
ACCESSIBILITY_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_IMPORTANT, BIND_NOT_FOREGROUND, BIND_WAIVE_PRIORITY, BLUETOOTH_SERVICE, CAMERA_SERVICE, CAPTIONING_SERVICE, CARRIER_CONFIG_SERVICE, CLIPBOARD_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, DEVICE_POLICY_SERVICE, DISPLAY_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, FINGERPRINT_SERVICE, INPUT_METHOD_SERVICE, INPUT_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_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NETWORK_STATS_SERVICE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, POWER_SERVICE, PRINT_SERVICE, RESTRICTIONS_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, STORAGE_SERVICE, TELECOM_SERVICE, TELEPHONY_SERVICE, TELEPHONY_SUBSCRIPTION_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_INPUT_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_SERVICE, WALLPAPER_SERVICE, WIFI_P2P_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, stopSelf, stopSelf, stopSelfResult
attachBaseContext, bindService, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingPermission, checkCallingUriPermission, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, clearWallpaper, createConfigurationContext, createDisplayContext, createPackageContext, databaseList, deleteDatabase, deleteFile, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAssets, getBaseContext, getCacheDir, getClassLoader, getCodeCacheDir, getContentResolver, getDatabasePath, getDir, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainLooper, getNoBackupFilesDir, getObbDir, getObbDirs, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getResources, getSharedPreferences, getSystemService, getSystemServiceName, getTheme, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isRestricted, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setTheme, setWallpaper, setWallpaper, startActivities, startActivities, startActivity, startActivity, startInstrumentation, startIntentSender, startIntentSender, startService, stopService, unbindService, unregisterReceiver
public int onStartCommand(android.content.Intent intent, int flags, int startId)
onStartCommand
in class android.app.Service
@Nullable protected 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)
@Nullable public android.os.IBinder onBind(android.content.Intent intent)
onBind
in class android.app.Service
protected void startTask(HeadlessJsTaskConfig taskConfig)
taskConfig
- describes what task to start and the parameters to pass to itpublic void onDestroy()
onDestroy
in class android.app.Service
public void onHeadlessJsTaskStart(int taskId)
HeadlessJsTaskEventListener
onHeadlessJsTaskStart
in interface HeadlessJsTaskEventListener
taskId
- the unique identifier of this task instancepublic void onHeadlessJsTaskFinish(int taskId)
HeadlessJsTaskEventListener
HeadlessJsTaskSupportModule#notifyTaskFinished
is called, or when it times out), on the
UI thread.onHeadlessJsTaskFinish
in interface HeadlessJsTaskEventListener
protected 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.