https://github.com/sreejithr/react-native-context-execute
Execute JS code in React Native context
https://github.com/sreejithr/react-native-context-execute
react-native
Last synced: about 2 months ago
JSON representation
Execute JS code in React Native context
- Host: GitHub
- URL: https://github.com/sreejithr/react-native-context-execute
- Owner: sreejithr
- Created: 2017-02-21T10:07:30.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-02-21T13:05:53.000Z (over 9 years ago)
- Last Synced: 2025-01-22T17:16:56.475Z (over 1 year ago)
- Topics: react-native
- Language: Java
- Size: 7.81 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# react-native-context-execute
Execute JS code in React Native's context even when RN is inactive (eg. app in background).
In Android, where background services are indispensable, keeping RN in sync can be hard since RN doesn't stay active in background. **Currently, Android-only**.
A tiny library which registers a `JavascriptModule` in RN's `JavascriptModuleRegistry` and makes `Catalyst` (Bridge) run it.
Before using this, please note that **HeadlessJS** is another good way to go.
## Getting started
`$ npm install react-native-context-execute --save`
### Mostly automatic installation
`$ rnpm link react-native-context-execute`
### Manual installation
#### Android
1. Open up `android/app/src/main/java/[...]/MainActivity.java`
- Add `import com.reactlibrary.RNContextExecutePackage;` to the imports at the top of the file
- Add `new RNContextExecutePackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
```
include ':react-native-context-execute'
project(':react-native-context-execute').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-context-execute/android')
```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
```
compile project(':react-native-context-execute')
```
## Usage
In your Java side, grab hold of the `ReactApplicationContext` and do,
```java
WritableMap payload = Arguments.createMap();
payload.putString("some_key", "some_value");
new ReactContextExecutor(reactApplicationContext).execute("some_other_key", payload);
```
In JS side,
```javascript
import { ContextExecute } from 'react-native-context-execute';
ContextExecute((op, data) => {
// Do your thing
});
```