Как запустить функцию в другом потоке ввода-вывода только один раз (с помощью сопрограмм)?

#android #runnable #kotlin-android-extensions #kotlin-coroutines

#Android #работоспособный #kotlin-android-extensions #kotlin-сопрограммы

Вопрос:

Я использую nisrulz QReader. Как в примерах

 qrEader = new QREader.Builder(this, mySurfaceView, new QRDataListener() {
    @Override
    public void onDetected(final String data) {
     //   Log.d("QREader", "Value : "   data);
        text.post(new Runnable() {
            @Override
            public void run() {
                doSomething(data);
            }
        });
    }
}).facing(QREader.BACK_CAM)
        .enableAutofocus(true)
        .height(mySurfaceView.getHeight())
        .width(mySurfaceView.getWidth())
        .build();
  

у них есть текст, который является TextView, что делает возможным post (Runnable). У меня нет никаких представлений, и я не хочу добавлять..

Как я могу запустить doSomething(data) только один раз в другом потоке?

РЕДАКТИРОВАТЬ: я попытался преобразовать пример кода Java в Kotlin:

 qreader = QREader.Builder(view.context, surface_view, QRDataListener { data ->
    myTextView.post {
        doSomething(data)
    }
})
.facing(QREader.BACK_CAM)
.enableAutofocus(true)
.height(surface_view.height)
.width(surface_view.width)
.build()
  

Комментарии:

1. В Java нет сопрограмм. m Вы можете создать поток и запустить его, что, вероятно, является тем, что вы хотите. Я отвечаю на HJava, потому что это не похоже на код Kotlin — я не думаю, что он вообще использует ключевое слово new.

2. @GabeSechan Это был просто пример. Я использую эту библиотеку в своем проекте Kotlibn. К сожалению, Handler().post{}... не сработает.