美文网首页
Android Kotlin 代码笔记,全局的UI线程回调函数(

Android Kotlin 代码笔记,全局的UI线程回调函数(

作者: 水天滑稽天照八野滑稽石 | 来源:发表于2020-08-26 19:24 被阅读0次

    使用方法

    postUI{
          //需要跑在UI线程的代码块
    }
    

    代码实现

    fun <T> T.postUI(action: () -> Unit) {
    
        // Fragment
        if (this is Fragment) {
            val fragment = this
            if (!fragment.isAdded) return
    
            val activity = fragment.activity ?: return
            if (activity.isFinishing) return
    
            activity.runOnUiThread(action)
            return
        }
    
        // Activity
        if (this is Activity) {
            if (this.isFinishing) return
    
            this.runOnUiThread(action)
            return
        }
    
        // 主线程
        if (Looper.getMainLooper() === Looper.myLooper()) {
            action()
            return
        }
    
        // 子线程,使用handler
        KitUtil.handler.post { action() }
    }
    
    object KitUtil{
         val handler: Handler by lazy {  Handler(Looper.getMainLooper()) }
    }
    

    相关文章

      网友评论

          本文标题:Android Kotlin 代码笔记,全局的UI线程回调函数(

          本文链接:https://www.haomeiwen.com/subject/ofmfsktx.html