当前位置: 首页 > wzjs >正文

建设银行不招聘网站北京做网络优化的公司

建设银行不招聘网站,北京做网络优化的公司,中国建设银行下载安装,欢迎访问建设银行网站文章目录 Android 防抖和节流概述工具类使用源码下载 Android 防抖和节流 概述 防抖(Debounce): 防抖是指在事件被触发后,等待一段时间,如果在这段时间内没有再触发事件,才执行处理函数。如果在这段时间内…

文章目录

  • Android 防抖和节流
    • 概述
    • 工具类
    • 使用
    • 源码下载

Android 防抖和节流

概述

  • 防抖(Debounce):
    • 防抖是指在事件被触发后,等待一段时间,如果在这段时间内没有再触发事件,才执行处理函数。如果在这段时间内又触发了事件,就重新开始计时。
    • 场景:适用于频繁触发的事件,如:输入框搜索。
  • 节流(Throttle):
    • 节流是指在一定时间间隔内,无论事件触发多少次,只执行一次处理函数。
    • 场景:适用于限制频率的操作,如:提交按钮。

工具类

object DebounceThrottleUtils {private val handler = Handler(Looper.getMainLooper())private val debounceMap = ConcurrentHashMap<String, Runnable>()private val throttleMap = ConcurrentHashMap<String, Long>()/*** 防抖*  @param key 唯一标识符(建议使用View ID)*  @param delayMillis 防抖时间间隔(毫秒)*  @param block 要执行的操作*/fun debounce(key: String, delayMillis: Long, block: () -> Unit) {// 移除之前的任务debounceMap[key]?.let {handler.removeCallbacks(it)debounceMap.remove(key)}// 创建新任务val runnable = Runnable {block()}debounceMap.put(key, runnable)// 延迟执行任务handler.postDelayed(runnable, delayMillis)}/*** 节流处理* @param key 唯一标识符(建议使用View ID)* @param intervalMillis 节流时间间隔(毫秒)* @param block 要执行的操作*/fun throttle(key: String, intervalMillis: Long, block: () -> Unit) {val now = System.currentTimeMillis()val lastTime = throttleMap[key] ?: 0if (now - lastTime >= intervalMillis) {throttleMap[key] = nowblock()}}/*** 清理指定(在onDestroy中调用)*/fun clear(key: String) {debounceMap[key]?.let {handler.removeCallbacks(it)debounceMap.remove(key)}throttleMap.remove(key)}/*** 清理全部(在onDestroy中调用)*/fun clearAll() {handler.removeCallbacksAndMessages(null)debounceMap.clear()throttleMap.clear()}
}/*** 获取View的key*/
fun View.getKey(): String {return "click_${this.id}"
}/*** 获取EditText的key*/
fun EditText.getKey(): String {return "text_change_${this.id}"
}/*** 防抖扩展方法*/
fun View.clickDebounce(debounceTime: Long = 500L, action: () -> Unit) {val key = getKey()setOnClickListener {DebounceThrottleUtils.debounce(key, debounceTime, action)}
}/*** 节流扩展方法*/
fun View.clickThrottle(throttleTime: Long = 300L, action: () -> Unit) {val key = getKey()setOnClickListener {DebounceThrottleUtils.throttle(key, throttleTime, action)}
}/*** 防抖扩展方法*/
fun EditText.textChangeDebounce(debounceTime: Long = 300L, action: (Editable?) -> Unit) {doAfterTextChanged { editable ->val key = getKey()DebounceThrottleUtils.debounce(key, debounceTime, {action(editable)})}
}

使用

etSearch.textChangeDebounce(debounceTime = 1000L) {Log.e("TAG", "textChange:${it.toString()}")
}
btnSubmit.clickDebounce(debounceTime = 1000L) {Log.e("TAG", "click-debounce-${System.currentTimeMillis()}")
}
btnSubmit2.clickThrottle(throttleTime = 1000L) {Log.e("TAG", "click-throttle-${System.currentTimeMillis()}")
}

源码下载

http://www.dtcms.com/wzjs/301695.html

相关文章:

  • 优酷视频放到网站上怎么做交换链接的方法
  • e时代网站制作seo是干什么的
  • 重庆最火的网站汕头seo公司
  • 广州外贸网站建设公司站长工具seo综合查询降级
  • 北京的网站建设收费标准阿里云搜索引擎
  • 一个专门做澳洲直邮的网站吗100%上热门文案
  • 做网站需要用什么软件seo怎样优化网站
  • 天津市住房和城乡建设管理委员会网站成品网站源码的优化技巧
  • 全屏网站模板行者seo
  • 怎么用java做动态网站电商营销策划方案范文
  • 吉林省建设局网站网站关键词有哪些
  • 怎么免费注册网站广州seo关键词优化外包
  • 六安手机网站建设百度认证
  • 厦门网站建设解决方案千锋教育可靠吗
  • 如何申请网站域名seo全网优化推广
  • 怎么制作干花seo模拟点击算法
  • 苏州网站制作的公司友情链接平台哪个好
  • 为什么做动漫短视频网站模板网站建设开发
  • 有没有专门做飞卢小说盗版的网站挖掘关键词工具
  • 网上虚拟银行注册网站学生个人网页制作html代码
  • wordpress网站源码软文网站推荐
  • 宜家有做自己的网站吗收录是什么意思
  • 常州工厂网站建设鸣蝉智能建站
  • 制作网站的最新软件是什么seo优化关键词放多少合适
  • 做企业形象网站今日十大热点新闻
  • WORDPRESS导航条固定seo快速提升排名
  • 九九建筑网网站性能优化
  • 西安做营销型网站建设百度搜索推广的五大优势
  • 烟台网站建设九七搜索引擎广告形式有
  • 互联网网站制作公司临沂seo建站