首页 > 解决方案 > 将数据传输到 onSuccess() 方法

问题描述

在下面的代码中,我将过程的结果写入文本字段。代码作为任务的一部分执行。

我希望将文本(字符串“test”)“传输”到 onSuccess() 方法,以便可以在 onSuccess() 中使用它。我不想通过静态/全局变量来做到这一点。

我的问题是:我可以将数据传输到 onSucess() 方法吗?

private void recognizeTextFromImage(InputImage image) {

  String test = “Test“

  TextRecognizer recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);
  Task<Text> task = recognizer.process(image);
  // recognizer.process(image)
  task
    .addOnSuccessListener(
      new OnSuccessListener<Text>() {
      @Override
      public void onSuccess(Text texts) {
        recognizedText = processTextRecognitionResult(texts);
        editText_Test.setText(test + recognizedText);
        Log.d(TAG,"Successful: " + recognizedText);
      }
    })

    .addOnFailureListener(
      new OnFailureListener() {

    }
  });
  recognizer.close();
}

标签: javamultithreading

解决方案


变量“测试”不是某种“全局”。根据定义,它是一个局部变量,因此,每次调用者启动该方法时都会实例化一个新变量。我看不出只在 onSuccess 中使用测试变量没有并发问题,除非 TextRecognizer 以某种非常奇怪的方式实现。


推荐阅读