APIレベル28(Pie)では、新しいメソッドがContext
クラスに導入され、メインスレッドのExecutorを取得します getMainExecutor()
。
このエグゼキュータを28未満のAPIレベルで取得するにはどうすればよいですか?
レトロフィットのコードスニペットを使用できます 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);
}
}
_com.google.Android.gms.common.util.concurrent.HandlerExecutor
_...からnew HandlerExecutor(Looper.getMainLooper());
を使用できます。最終的には、 atarasenko と同じ答えになります。
そのためにKotlinに拡張機能を追加しました:
_fun Context.mainExecutor(): Executor {
return if (VERSION.SDK_INT >= VERSION_CODES.P) {
mainExecutor
} else {
HandlerExecutor(mainLooper)
}
}
_
次を使用できます(アクティビティなど)。
ContextCompat.getMainExecutor(this);