How to get Executor for main thread on API level < 28

后端 未结 3 630
离开以前
离开以前 2021-02-07 16:09

On API level 28(Pie) a new method is introduced in the Context class to get Executor for the main thread getMainExecutor().

How to get this executor on API

相关标签:
3条回答
  • 2021-02-07 16:38

    You can use code snippet from retrofit 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);
        }
    }   
    
    0 讨论(0)
  • 2021-02-07 16:39

    You can use (in activity for example):

    ContextCompat.getMainExecutor(this);
    

    https://developer.android.com/reference/androidx/core/content/ContextCompat.html#getMainExecutor(android.content.Context)

    0 讨论(0)
  • 2021-02-07 16:43

    You can use new HandlerExecutor(Looper.getMainLooper()); from com.google.android.gms.common.util.concurrent.HandlerExecutor...in the end it's the same answer as atarasenko.

    I added an extension in Kotlin for that:

    fun Context.mainExecutor(): Executor {
        return if (VERSION.SDK_INT >= VERSION_CODES.P) {
            mainExecutor
        } else {
            HandlerExecutor(mainLooper)
        }
    }
    
    0 讨论(0)
提交回复
热议问题