如何从Java中的嵌套内部类发送事件

时间:2018-09-09 16:09:07

标签: java react-native inner-classes sender

我有外部public class ClassifierModule和内部public class ClassifierRunnable。如何从内部类发送int并在外部类中接收它? 这是我的代码:

//outer class
public class ClassifierModule extends ReactContextBaseJavaModule implements BufferListener {

    public ClassifierModule(ReactApplicationContext reactContext) {
        super(reactContext);
        appState = ((MainApplication)reactContext.getApplicationContext());
        }     

    @Override
    public String getName() {
      return "Classifier";
    }

    // Called to emit events to event listeners in JS
    private void sendEvent(String eventName, int result) {
        getReactApplicationContext()
           .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
           .emit(eventName, result);
    }

    //inner class        
    public class ClassifierRunnable implements Runnable {

        public ClassifierRunnable(double[][] buffer) {
            rawBuffer = buffer;
            PSD = new double[NUM_CHANNELS][nbBins];
        }

        @Override
        public void run() {
            if (noisePresent(rawBuffer)) {
                Log.w("ConcentrationTracker", "noise");

                return;
            }

            else if(isTracking) {
                getSmoothPSD(rawBuffer);

                bandMeans = bandExtractor.extract1D(PSD);

                // Concentration algorithm goes here
                int score = measureRatio(bandMeans);

                Log.w("ConcentrationTracker", "Concentration score" + score);

                sendEvent("CONCENTRATION_SCORE", score);
            }

            else if(isLogging) {
                getSmoothPSD(rawBuffer);

                bandMeans = bandExtractor.extract1D(PSD);

                int a = measureAlpha(bandMeans);
                int b = measureBeta(bandMeans);

                String csvLine = a + "," + b;

            }
    }
}

2 个答案:

答案 0 :(得分:1)

看起来您已经有一个函数可以执行此操作...只是拦截整数

private void sendEvent(String eventName, int result) {
  System.out.println("Got " + result);
  // other code 
}

答案 1 :(得分:0)

您可以在外部类中指定一个接受int值并从内部类调用它的方法。这样,您可以将数据传输到外部类。