Как получить Executor для основного потока на уровне API <28 - PullRequest
0 голосов
/ 04 октября 2018

На уровне API 28 (Pie) в классе Context введен новый метод для получения Исполнителя для основного потока getMainExecutor().

Как включить этого исполнителяУровень API ниже 28?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вы можете использовать new HandlerExecutor(Looper.getMainLooper()); из com.google.android.gms.common.util.concurrent.HandlerExecutor ... в конце концов, это тот же ответ, что и атарасенко .

Для этого я добавил расширение в Kotlin:

fun Context.mainExecutor(): Executor {
    return if (VERSION.SDK_INT >= VERSION_CODES.P) {
        mainExecutor
    } else {
        HandlerExecutor(mainLooper)
    }
}
0 голосов
/ 04 октября 2018

Вы можете использовать фрагмент кода из модернизации https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/Platform.java

public class MainThreadExecutor implements Executor {
    private final Handler handler = new Handler(Looper.getMainLooper());

    @Override 
    public void execute(Runnable r) {
        handler.post(r);
    }
}   
...