ThreadUtils.kt 914 Bytes
Newer Older
1
package com.ydl.ydlcommon.utils
konghaorui committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

import android.os.Looper

import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers

/**
 * Created by haorui on 2019/4/19.
 * Des:
 */
object ThreadUtils {

    val isMainThread: Boolean
        get() = Looper.myLooper() == Looper.getMainLooper()

    //主线程做操作
    fun doOnUIThread(uiTask: UITask) {
        Observable.just(uiTask)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe { uiTask1 -> uiTask1.doOnUI() }

    }

    //io线程做操作
    fun doOnThread(threadTask: ThreadTask) {
        Observable.just(threadTask)
                .observeOn(Schedulers.io())
                .subscribe { threadTask1 -> threadTask1.doOnThread() }
    }

    interface ThreadTask {
        fun doOnThread()
    }

    interface UITask {
        fun doOnUI()
    }
}