react-native-background-geolocation 4.17.6 → 4.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +8 -2
- package/android/libs/com/transistorsoft/{tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.aar → tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar} +0 -0
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar.md5 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar.sha1 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar.sha256 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar.sha512 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager/{3.6.3/tslocationmanager-3.6.3.pom → 3.6.4/tslocationmanager-3.6.4.pom} +1 -1
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.pom.md5 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.pom.sha1 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.pom.sha256 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.pom.sha512 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager/maven-metadata.xml +4 -3
- package/android/libs/com/transistorsoft/{tslocationmanager/3.6.3/tslocationmanager-3.6.3.aar → tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.aar} +0 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.aar.md5 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.aar.sha1 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.aar.sha256 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.aar.sha512 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/{3.6.3/tslocationmanager-v21-3.6.3.pom → 3.6.4/tslocationmanager-v21-3.6.4.pom} +1 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.pom.md5 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.pom.sha1 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.pom.sha256 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.4/tslocationmanager-v21-3.6.4.pom.sha512 +1 -0
- package/android/libs/com/transistorsoft/tslocationmanager-v21/maven-metadata.xml +4 -3
- package/android/proguard-rules.pro +16 -0
- package/android/src/main/AndroidManifest.xml +1 -4
- package/android/src/main/java/com/transistorsoft/rnbackgroundgeolocation/HeadlessTask.java +40 -85
- package/android/src/main/java/com/transistorsoft/rnbackgroundgeolocation/HeadlessTaskManager.java +460 -0
- package/android/src/main/java/com/transistorsoft/rnbackgroundgeolocation/RNBackgroundGeolocationModule.java +25 -0
- package/expo/plugin/build/androidPlugin.js +0 -8
- package/expo/plugin/build/androidPlugin.js.map +1 -1
- package/package.json +2 -2
- package/src/NativeModule.js +12 -1
- package/src/declarations/BackgroundGeolocation.d.ts +65 -14
- package/src/declarations/interfaces/Config.d.ts +4 -2
- package/src/declarations/interfaces/HeadlessEvent.d.ts +49 -0
- package/src/declarations/types.d.ts +3 -0
- package/src/index.js +36 -7
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.3/tslocationmanager-3.6.3.aar.md5 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.3/tslocationmanager-3.6.3.aar.sha1 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.3/tslocationmanager-3.6.3.aar.sha256 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.3/tslocationmanager-3.6.3.aar.sha512 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.3/tslocationmanager-3.6.3.pom.md5 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.3/tslocationmanager-3.6.3.pom.sha1 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.3/tslocationmanager-3.6.3.pom.sha256 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager/3.6.3/tslocationmanager-3.6.3.pom.sha512 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.aar.md5 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.aar.sha1 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.aar.sha256 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.aar.sha512 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.pom.md5 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.pom.sha1 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.pom.sha256 +0 -1
- package/android/libs/com/transistorsoft/tslocationmanager-v21/3.6.3/tslocationmanager-v21-3.6.3.pom.sha512 +0 -1
package/android/build.gradle
CHANGED
|
@@ -14,7 +14,7 @@ def DEFAULT_TARGET_SDK_VERSION = 30
|
|
|
14
14
|
def DEFAULT_APP_COMPAT_VERSION = "1.6.1"
|
|
15
15
|
|
|
16
16
|
// Plugin dependencies
|
|
17
|
-
def DEFAULT_PLAY_SERVICES_LOCATION_VERSION
|
|
17
|
+
def DEFAULT_PLAY_SERVICES_LOCATION_VERSION = "20.0.0"
|
|
18
18
|
def DEFAULT_HMS_LOCATION_VERSION = "6.9.0.300"
|
|
19
19
|
def DEFAULT_OK_HTTP_VERSION = "3.12.13"
|
|
20
20
|
def DEFAULT_ANDROID_PERMISSIONS_VERSION = "2.1.6"
|
|
@@ -42,9 +42,14 @@ android {
|
|
|
42
42
|
defaultConfig {
|
|
43
43
|
minSdkVersion safeExtGet('minSdkVersion', 16)
|
|
44
44
|
targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION)
|
|
45
|
+
consumerProguardFiles 'proguard-rules.pro'
|
|
45
46
|
versionCode 1
|
|
46
47
|
versionName "1.0"
|
|
47
48
|
}
|
|
49
|
+
compileOptions {
|
|
50
|
+
sourceCompatibility JavaVersion.VERSION_1_8
|
|
51
|
+
targetCompatibility JavaVersion.VERSION_1_8
|
|
52
|
+
}
|
|
48
53
|
}
|
|
49
54
|
|
|
50
55
|
repositories{
|
|
@@ -98,4 +103,5 @@ dependencies {
|
|
|
98
103
|
def workVersion = safeExtGet('workVersion', DEFAULT_WORK_VERSION)
|
|
99
104
|
def concurrentFuturesVersion = safeExtGet('concurrentFuturesVersion', DEFAULT_CONCURRENT_FUTURES_VERSION)
|
|
100
105
|
implementation "androidx.work:work-runtime:$workVersion"
|
|
101
|
-
implementation "androidx.concurrent:concurrent-futures:$concurrentFuturesVersion"
|
|
106
|
+
implementation "androidx.concurrent:concurrent-futures:$concurrentFuturesVersion"
|
|
107
|
+
}
|
|
Binary file
|
package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
bd49466dd13ba67b82ab2752a1d71318
|
package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d8523b683cf9d70e53317362389b81bebe6f1d9f
|
package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
328f8a4a248f6d9d5ae95fad7d996eca1470e7e0d56bad5cba04d0fabf8c6632
|
package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.aar.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
18b6dea8cdb386ac662f7bbeff3a0061fa4855ae63e717db14a6009ed3027090407cc6c0ed97b566a260b57e1f8facbcdeb8b4424c47a27c237d6985878d75dd
|
package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.pom.md5
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
9a0e698b655e8d6b1de240345eb0bb1e
|
package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.pom.sha1
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d4c0e936144e9629f09726d231ffb65382d117f8
|
package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.pom.sha256
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
29f18c0813aab1f46f264aae982c92a937c752f9d347371d0504db62885c615a
|
package/android/libs/com/transistorsoft/tslocationmanager/3.6.4/tslocationmanager-3.6.4.pom.sha512
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1710cfc5d6b4638db7eca4ba894a346d024f6041c79cbcdd165c3da68939eac4e1e1cb5c5b4ea7d933d6576fab4db08e79301efb42073186349a90bf00b283ed
|
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
<groupId>com.transistorsoft</groupId>
|
|
4
4
|
<artifactId>tslocationmanager</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>3.6.
|
|
7
|
-
<release>3.6.
|
|
6
|
+
<latest>3.6.4</latest>
|
|
7
|
+
<release>3.6.4</release>
|
|
8
8
|
<versions>
|
|
9
9
|
<version>3.6.0</version>
|
|
10
10
|
<version>3.6.1</version>
|
|
11
11
|
<version>3.6.2</version>
|
|
12
12
|
<version>3.6.3</version>
|
|
13
|
+
<version>3.6.4</version>
|
|
13
14
|
</versions>
|
|
14
|
-
<lastUpdated>
|
|
15
|
+
<lastUpdated>20241203042324</lastUpdated>
|
|
15
16
|
</versioning>
|
|
16
17
|
</metadata>
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
74bb14fd07fb16ee170c5ad3d07f817d
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6c1c89301376ea993978bc06f919edaaa29fb3fb
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
961d0d90ccb09bf5731a3a297c4e7fbacb9f24d20bdaa9dabc79b729d5a109eb
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
01e530f5a7f3db6a9d9d436f345093e5538421d16b663daf9682317829d67bb9a80d4a58de10e485235744793ae039267335c0dc680c54bdc814a7bc31d4f01f
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
95c1c712873b163f6641ce4b071e7af7
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
d003fdeb61221dbe7eccd3eae06a88464f4837ca
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7e76a8d9ad740486eed08130a444e02a80959b615d0ae87899af8e85a3e0aa8b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
56a88d4d6a4ca5061f3061bd5bd950a0c6afa271c6bdc5cfa960d77c39092d902736ffc32c53c99c2e55c02ea85f27aeec646e1cc3baceb48160a54dd86fe9b2
|
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
<groupId>com.transistorsoft</groupId>
|
|
4
4
|
<artifactId>tslocationmanager-v21</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>3.6.
|
|
7
|
-
<release>3.6.
|
|
6
|
+
<latest>3.6.4</latest>
|
|
7
|
+
<release>3.6.4</release>
|
|
8
8
|
<versions>
|
|
9
9
|
<version>3.6.0</version>
|
|
10
10
|
<version>3.6.1</version>
|
|
11
11
|
<version>3.6.2</version>
|
|
12
12
|
<version>3.6.3</version>
|
|
13
|
+
<version>3.6.4</version>
|
|
13
14
|
</versions>
|
|
14
|
-
<lastUpdated>
|
|
15
|
+
<lastUpdated>20241203042324</lastUpdated>
|
|
15
16
|
</versioning>
|
|
16
17
|
</metadata>
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
-keepnames class com.facebook.react.ReactActivity
|
|
2
|
+
|
|
3
|
+
# for react-native Headless on new architecture
|
|
4
|
+
-keep class com.facebook.react.defaults.DefaultNewArchitectureEntryPoint {
|
|
5
|
+
public <methods>;
|
|
6
|
+
}
|
|
7
|
+
-keep class com.facebook.react.ReactApplication {
|
|
8
|
+
public <methods>;
|
|
9
|
+
}
|
|
10
|
+
-keep class com.facebook.react.ReactHost {
|
|
11
|
+
public <methods>;
|
|
12
|
+
}
|
|
13
|
+
-keep class * extends com.facebook.react.ReactHost {
|
|
14
|
+
public <methods>;
|
|
15
|
+
}
|
|
16
|
+
-keep class com.facebook.react.fabric.** { *; }
|
|
17
|
+
|
|
2
18
|
-keepnames class com.transistorsoft.rnbackgroundgeolocation.RNBackgroundGeolocation
|
|
3
19
|
|
|
4
20
|
-keep class com.transistorsoft** { *; }
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
2
|
-
package="com.transistorsoft.rnbackgroundgeolocation">
|
|
3
|
-
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
4
2
|
<application android:label="@string/app_name"></application>
|
|
5
|
-
|
|
6
3
|
</manifest>
|
|
@@ -1,22 +1,12 @@
|
|
|
1
1
|
package com.transistorsoft.rnbackgroundgeolocation;
|
|
2
2
|
|
|
3
|
-
import android.content.Context;
|
|
4
|
-
import android.os.Handler;
|
|
5
|
-
import android.os.Looper;
|
|
6
|
-
|
|
7
|
-
import com.facebook.react.ReactApplication;
|
|
8
|
-
import com.facebook.react.ReactInstanceManager;
|
|
9
|
-
import com.facebook.react.bridge.ReactContext;
|
|
10
|
-
import com.facebook.react.bridge.UiThreadUtil;
|
|
11
3
|
import com.facebook.react.bridge.WritableMap;
|
|
12
4
|
import com.facebook.react.bridge.WritableNativeMap;
|
|
13
|
-
import com.facebook.react.jstasks.HeadlessJsTaskConfig;
|
|
14
|
-
import com.facebook.react.jstasks.HeadlessJsTaskContext;
|
|
15
|
-
import com.facebook.react.jstasks.HeadlessJsTaskEventListener;
|
|
16
5
|
|
|
17
6
|
import org.greenrobot.eventbus.Subscribe;
|
|
18
7
|
|
|
19
8
|
import com.transistorsoft.locationmanager.adapter.BackgroundGeolocation;
|
|
9
|
+
import com.transistorsoft.locationmanager.event.FinishHeadlessTaskEvent;
|
|
20
10
|
import com.transistorsoft.locationmanager.event.HeadlessEvent;
|
|
21
11
|
import com.transistorsoft.locationmanager.logger.TSLog;
|
|
22
12
|
|
|
@@ -24,20 +14,23 @@ import org.greenrobot.eventbus.ThreadMode;
|
|
|
24
14
|
import org.json.JSONException;
|
|
25
15
|
import org.json.JSONObject;
|
|
26
16
|
|
|
27
|
-
import java.util.ArrayList;
|
|
28
|
-
import java.util.List;
|
|
29
|
-
|
|
30
17
|
/**
|
|
18
|
+
* The BackgroundGeolocation SDK creates a single instance of this class (via reflection upon Config.headlessJobService)
|
|
19
|
+
* The SDK delivers events to this instance by dropping them onto EventBus (see @Subscribe). Because this instance is subscribed
|
|
20
|
+
* into EventBus, it's protected from GC.
|
|
21
|
+
*
|
|
31
22
|
* Created by chris on 2018-01-23.
|
|
32
23
|
*/
|
|
33
24
|
|
|
34
25
|
public class HeadlessTask {
|
|
35
|
-
private static String HEADLESS_TASK_NAME = "BackgroundGeolocation";
|
|
36
|
-
// Hard-coded time-limit for headless-tasks is
|
|
37
|
-
private static int TASK_TIMEOUT =
|
|
38
|
-
|
|
39
|
-
private final List<Integer> mTasks = new ArrayList<>();
|
|
26
|
+
private static final String HEADLESS_TASK_NAME = "BackgroundGeolocation";
|
|
27
|
+
// Hard-coded time-limit for headless-tasks is 60000 @todo configurable?
|
|
28
|
+
private static final int TASK_TIMEOUT = 60000 * 2;
|
|
40
29
|
|
|
30
|
+
/**
|
|
31
|
+
* EventBus receiver for a HeadlessTask HeadlessEvent
|
|
32
|
+
* @param event
|
|
33
|
+
*/
|
|
41
34
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
42
35
|
public void onHeadlessEvent(HeadlessEvent event) {
|
|
43
36
|
String name = event.getName();
|
|
@@ -95,81 +88,43 @@ public class HeadlessTask {
|
|
|
95
88
|
} catch (JSONException e) {
|
|
96
89
|
clientEvent.putNull("params");
|
|
97
90
|
clientEvent.putString("error", e.getMessage());
|
|
98
|
-
TSLog.logger.error(TSLog.error(e.getMessage()));
|
|
99
|
-
e.printStackTrace();
|
|
91
|
+
TSLog.logger.error(TSLog.error(e.getMessage()), e);
|
|
100
92
|
}
|
|
101
93
|
}
|
|
102
94
|
|
|
103
|
-
HeadlessJsTaskConfig config = new HeadlessJsTaskConfig(HEADLESS_TASK_NAME, clientEvent, TASK_TIMEOUT);
|
|
104
95
|
try {
|
|
105
|
-
startTask(event.getContext(),
|
|
106
|
-
|
|
107
|
-
|
|
96
|
+
HeadlessTaskManager.getInstance().startTask(event.getContext(), new HeadlessTaskManager.Task.Builder()
|
|
97
|
+
.setName(HEADLESS_TASK_NAME)
|
|
98
|
+
.setParams(clientEvent)
|
|
99
|
+
.setTimeout(TASK_TIMEOUT)
|
|
100
|
+
.setOnInvokeCallback((reactContext, task) -> {
|
|
101
|
+
//TSLog.logger.debug("*** onInvoke: " + task.getId());
|
|
102
|
+
})
|
|
103
|
+
.setOnFinishCallback(taskId -> {
|
|
104
|
+
//TSLog.logger.debug("*** onFinish: " + taskId);
|
|
105
|
+
})
|
|
106
|
+
.setOnErrorCallback((task, e) -> {
|
|
107
|
+
TSLog.logger.warn("⚠\uFE0F HeadlessTaskError: " + e.getMessage() + ": " + task.toString());
|
|
108
|
+
})
|
|
109
|
+
.build()
|
|
110
|
+
);
|
|
111
|
+
} catch (Exception e) {
|
|
112
|
+
TSLog.logger.warn(TSLog.warn("Failed invoke HeadlessTask " + name + ". Task ignored: " + e.getMessage()));
|
|
113
|
+
e.printStackTrace();
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
116
|
|
|
111
117
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* @param taskConfig describes what task to start and the parameters to pass to it
|
|
118
|
+
* EventBus Receiver. Called when developer runs BackgroundGeolocation.finishHeadlessTask(taskId) from within their registered HeadlessTask.
|
|
119
|
+
* Calls RN's HeadlessJsTaskContext.finishTask(taskId);
|
|
120
|
+
* @param event
|
|
117
121
|
*/
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
|
|
125
|
-
if (reactContext == null) {
|
|
126
|
-
reactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
|
|
127
|
-
@Override public void onReactContextInitialized(final ReactContext reactContext) {
|
|
128
|
-
// Hack to fix unknown problem executing asynchronous BackgroundTask when ReactContext is created *first time*. Fixed by adding short delay before #invokeStartTask
|
|
129
|
-
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
|
|
130
|
-
@Override
|
|
131
|
-
public void run() {
|
|
132
|
-
invoke(reactContext, taskConfig);
|
|
133
|
-
}
|
|
134
|
-
}, 500);
|
|
135
|
-
reactInstanceManager.removeReactInstanceEventListener(this);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
if (!reactInstanceManager.hasStartedCreatingInitialContext()) {
|
|
139
|
-
reactInstanceManager.createReactContextInBackground();
|
|
140
|
-
}
|
|
141
|
-
} else {
|
|
142
|
-
invoke(reactContext, taskConfig);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
private void invoke(ReactContext reactContext, final HeadlessJsTaskConfig taskConfig) {
|
|
147
|
-
final HeadlessJsTaskContext headlessJsTaskContext = HeadlessJsTaskContext.getInstance(reactContext);
|
|
148
|
-
|
|
149
|
-
synchronized(mTasks) {
|
|
150
|
-
if (mTasks.isEmpty()) {
|
|
151
|
-
headlessJsTaskContext.addTaskEventListener(new HeadlessJsTaskEventListener() {
|
|
152
|
-
@Override public void onHeadlessJsTaskStart(int taskId) {
|
|
153
|
-
TSLog.logger.debug("taskId: " + taskId);
|
|
154
|
-
}
|
|
155
|
-
@Override public void onHeadlessJsTaskFinish(int taskId) {
|
|
156
|
-
TSLog.logger.debug("taskId: " + taskId);
|
|
157
|
-
synchronized (mTasks) {
|
|
158
|
-
if (!mTasks.isEmpty()) {
|
|
159
|
-
mTasks.remove(0);
|
|
160
|
-
}
|
|
161
|
-
if (mTasks.isEmpty()) {
|
|
162
|
-
headlessJsTaskContext.removeTaskEventListener(this);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
try {
|
|
169
|
-
mTasks.add(headlessJsTaskContext.startTask(taskConfig));
|
|
170
|
-
} catch (IllegalStateException e) {
|
|
171
|
-
TSLog.logger.error(TSLog.error(e.getMessage()));
|
|
172
|
-
}
|
|
122
|
+
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
123
|
+
public void onFinishHeadlessTask(FinishHeadlessTaskEvent event) {
|
|
124
|
+
try {
|
|
125
|
+
HeadlessTaskManager.getInstance().finishTask(event.getContext(), event.getTaskId());
|
|
126
|
+
} catch (Exception e) {
|
|
127
|
+
TSLog.logger.warn(TSLog.warn(e.getMessage()));
|
|
173
128
|
}
|
|
174
129
|
}
|
|
175
130
|
}
|