Как запустить функцию в другом потоке (IO) только один раз (с сопрограммами)? - PullRequest
1 голос
/ 03 апреля 2019

Я использую 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, что делает возможной публикацию (Runnable).У меня нет представлений, и я не хочу добавлять ..

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

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

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()
...