Skip to content

Commit da0b426

Browse files
authored
Merge pull request #9 from ExodusMovement/cawfree/android-multiprocessing-support
add support for android multiprocessing
2 parents d469184 + 3a65833 commit da0b426

5 files changed

Lines changed: 66 additions & 9 deletions

File tree

android/build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11

22
buildscript {
33
repositories {
4-
jcenter()
4+
google()
5+
mavenCentral()
56
}
67

78
dependencies {
8-
classpath 'com.android.tools.build:gradle:2.2.3'
9+
classpath 'com.android.tools.build:gradle:7.3.1'
910
}
1011
}
1112

@@ -30,8 +31,8 @@ android {
3031
}
3132

3233
repositories {
34+
google()
3335
mavenCentral()
34-
jcenter()
3536
maven {
3637
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
3738
url "$rootDir/../node_modules/react-native/android"
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.rnthreads;
2+
3+
import com.facebook.react.ReactPackage;
4+
import com.facebook.react.ReactNativeHost;
5+
import com.facebook.react.bridge.NativeModule;
6+
import com.facebook.react.bridge.ReactApplicationContext;
7+
import com.facebook.react.uimanager.ViewManager;
8+
9+
import java.util.Arrays;
10+
import java.util.Collections;
11+
import java.util.List;
12+
13+
import com.facebook.react.modules.blob.FileReaderModule;
14+
15+
public class RNFileReaderPackage implements ReactPackage {
16+
17+
@Override
18+
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
19+
return Collections.emptyList();
20+
}
21+
22+
@Override
23+
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
24+
return Arrays.<NativeModule>asList(
25+
new FileReaderModule(reactContext)
26+
);
27+
}
28+
}

android/src/main/java/com/rnthreads/RNThreadModule.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import java.util.ArrayList;
2424
import java.util.Arrays;
2525
import java.util.HashMap;
26-
26+
import java.util.concurrent.TimeUnit;
2727

2828
import okhttp3.OkHttpClient;
2929
import okhttp3.Request;
@@ -53,6 +53,10 @@ public RNThreadModule(final ReactApplicationContext reactContext, ReactNativeHos
5353
reactContext.addLifecycleEventListener(this);
5454
}
5555

56+
// https://github.com/ExodusMovement/template-wallet/issues/106#issuecomment-2322604973
57+
@ReactMethod public void addListener(String eventName) {}
58+
@ReactMethod public void removeListeners(Integer count) {}
59+
5660
@Override
5761
public String getName() {
5862
return "ThreadManager";
@@ -222,7 +226,13 @@ private String bundleUrlForFile(final String fileName) {
222226
}
223227

224228
private void downloadScriptToFileSync(String bundleUrl, String bundleOut) {
225-
OkHttpClient client = new OkHttpClient();
229+
230+
// Here we increase the read timeout to avoid crashes on startup
231+
// when bundling from an empty metro cache:
232+
OkHttpClient client = new OkHttpClient.Builder()
233+
.readTimeout(60, TimeUnit.SECONDS)
234+
.build();
235+
226236
final File out = new File(bundleOut);
227237

228238
Request request = new Request.Builder()

android/src/main/java/com/rnthreads/RNThreadPackage.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,32 @@
1010
import java.util.Collections;
1111
import java.util.List;
1212

13+
import com.rnthreads.RNFileReaderPackage;
14+
1315
public class RNThreadPackage implements ReactPackage {
1416

1517
private ReactNativeHost reactNativeHost;
1618
private ReactPackage additionalThreadPackages[];
1719

18-
public RNThreadPackage(ReactNativeHost reactNativeHost, ReactPackage... additionalThreadPackages) {
19-
this.reactNativeHost = reactNativeHost;
20-
this.additionalThreadPackages = additionalThreadPackages;
20+
public RNThreadPackage(ReactNativeHost pReactNativeHost, ReactPackage ...pAdditionalThreadPackages) {
21+
this.reactNativeHost = pReactNativeHost;
22+
23+
// You can add more packages here if you find that using some
24+
// vanilla RN functionality leaves the background thread unable
25+
// to mount properly.
26+
ReactPackage[] extraPackages = {
27+
new RNFileReaderPackage() /* https://github.com/facebook/react-native/blob/7ea7d946c643f076c29bcf11b927f7569e3c516f/Libraries/Core/setUpXHR.js#L31 */
28+
// ...
29+
};
30+
31+
// Create an array large enough to acommodate for both
32+
// the user-defined `pAdditionalThreadPackages` and the
33+
// `extraPackages`:
34+
this.additionalThreadPackages = new ReactPackage[pAdditionalThreadPackages.length + extraPackages.length];
35+
36+
// i.e. [...pAdditionalThreadPackages, ...extraPackages];
37+
System.arraycopy(pAdditionalThreadPackages, 0, this.additionalThreadPackages, 0, pAdditionalThreadPackages.length);
38+
System.arraycopy(extraPackages, 0, this.additionalThreadPackages, pAdditionalThreadPackages.length, extraPackages.length);
2139
}
2240

2341
@Override

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@exodus/react-native-threads",
3-
"version": "0.3.7",
3+
"version": "0.3.8",
44
"description": "",
55
"main": "index.js",
66
"repository": {

0 commit comments

Comments
 (0)