1

Java Native Module에서 JS 코드를 실행하는 방법을 찾고 있습니다. 타이머으로 솔루션을 찾았지만 콜백을 사용하며 앱이 백그라운드 일 때만 작동합니다 (React-native background process(android) handling?).React Native : AlarmManager를 사용하여 백그라운드에서 Java Module의 JS 코드 실행

AlarmManager을 사용하여 Java의 BroadcastReceiver를 깨우지 만,이 시점부터 어떻게 자바 스크립트 코드를 실행하는지 알 수 없습니다. 이 코드는 반응 컴포넌트가 아니지만 반응 SDK와 모듈 (facebooksdk, googlesdk, Keychain, Asyncstorage)을 사용합니다.

나는 (때문에 https://facebook.github.io/react-native/docs/native-modules-android.html에) DeviceEventEmitter에 리스너를 생성하고 브로드 캐스트 리시버에게

public class Alarm extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 

    ReactApplicationContext contxt = (ReactApplicationContext) context; 
    contxt.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) 
    .emit("runTask", null); 

} 

같은 뭔가를 실행하려고하지만 런타임 오류 주조했다 : 어쩌면 그렇지 않은

Caused by: java.lang.ClassCastException: android.app.ReceiverRestrictedContext cannot be cast to com.facebook.react.bridge.ReactApplicationContext 

을 특히 애플리케이션이 닫힐 때 Java 모듈에서 JS를 백그라운드로 실행할 수 있습니다. 모든 팁을 환영합니다.

답변

3

체크 아웃 transistorsoft의 GitHub의 계정 특히

는 :

나는이 일부 성공을 거두었습니다.

그러나 이들 모두에는 단점이 있습니다. 지금까지는 백그라운드에서 JS를 실제로 실행하는 패키지를 찾지 못했습니다. RN 팀이 아직 그 일을하고 있지만 아직 아무것도 준비하지 못했습니다.

이 경우 솔루션은 Java에서 백그라운드로 실행해야하는 모든 것을 코드화하는 것입니다. 궁극적으로 이것은 내가 한 일입니다.

+0

@ jonzee가 문제를 해결 했습니까? –

관련 문제