Use executor more intelligently

This commit is contained in:
Mygod
2020-07-03 15:31:35 -04:00
parent 921af588da
commit b3f259ddcb

View File

@@ -128,13 +128,12 @@ object WifiApManager {
@get:RequiresApi(30)
val featureLookup by lazy { LongConstantLookup(classSoftApCapability, "SOFTAP_FEATURE_") }
private val methods29 = setOf("onStateChanged", "onNumClientsChanged")
@RequiresApi(28)
fun registerSoftApCallback(callback: SoftApCallbackCompat, executor: Executor): Any {
val proxy = Proxy.newProxyInstance(interfaceSoftApCallback.classLoader,
arrayOf(interfaceSoftApCallback), object : InvocationHandler {
override fun invoke(proxy: Any, method: Method, args: Array<out Any?>?) =
if (Build.VERSION.SDK_INT < 30 && method.name in methods29) {
if (Build.VERSION.SDK_INT < 30 && interfaceSoftApCallback === method.declaringClass) {
executor.execute { invokeActual(proxy, method, args) }
null // no return value as of API 30
} else invokeActual(proxy, method, args)