玩转Kotlin- 实现方法队列 ,顺序执行

玩转Kotlin- 实现方法队列 ,顺序执行

转载请注明出处:https://blog.csdn.net/qq_33681537/article/details/81979115
这只我第一篇博客 这么多操作符 还真是一脸懵逼 = =

最近有个需求,主页弹出好几个自定义Alertdialog  要求按顺序弹出 关闭后弹出下一个 ,

经过多次尝试 鱿鱼 alert有个坑,必须在设置window前 show出来 so 只能将整个方法体保存起来 实在不会写样式 代码很简单 我就直接贴出来:

Kotlin

kotlin 有个特性,可以直接把方法体当参数传入 类似C的指针方法 于是我就想到将方法存起来后按顺序执行


package com.whxxcy.mango.util

import java.util.*

/**
 * Created by Quan on 2018/8/23 0023 11:47
 * E-Mail Address:672114236@qq.com
 */
object OrderFuncUtils {

    private var queueFun = LinkedList()

    private var currentFun: (() -> Unit?)? = null // 当前任务


    fun addFunc(function: () -> Unit?) {
        var func = Function(function)
        doFunc(func)
    }

    fun finishFunc() {
        doFunc(null)
    }

    private fun doFunc(func: Function?) {
        if (func != null) {
            queueFun.offer(func)
        } else {
            currentFun = null
        }
        if (currentFun == null) {
            if (queueFun.size != 0) {
                var funnow = queueFun.poll()
                currentFun = funnow.function
                currentFun?.invoke()
            }
        }
    }

    data class Function(var function: () -> Unit? = {})
}

代码很简单 我就不多讲了

  • 首先 OrderFuncUtils.addFunc { DialogUtils.showTipDialog(this) } 将方法传进去
  • 在判断该方法结束的地方 OrderFuncUtils.finishFunc()

你可能感兴趣的:(Android)