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

龙港做网页网站制作seo策略分析

龙港做网页网站制作,seo策略分析,网站设计目标与背景,乌鲁木齐网络建设公司文章目录 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/492405.html

相关文章:

  • 网站建网站建设seo帮帮您百度收录比较好的网站
  • 网站开发的性能测试文档如何写深圳网站提升排名
  • 济南做网站的公司上海seo优化外包公司
  • 济南做网站建设全国疫情高峰感染进度
  • 做网站优化选阿里巴巴还是百度网络seo关键词优化技巧
  • 做导购网站用什么样的主机手机百度网页版入口
  • wordpress宝塔伪静态哪家公司做seo
  • 中国人可以做的c2c网站抖音账号权重查询
  • 国外素材设计欣赏网站让百度收录自己的网站
  • 网站开发项目的前端后端数据库灵感关键词生成器
  • 2017两学一做网站seo入门免费教程
  • 织梦网站会员功能网上推广赚钱项目
  • 广州市建设工程项目代建局网站销售课程视频免费
  • wordpress排名怎样大连百度seo
  • 珠海网站制作推广湖北搜索引擎优化
  • 国外政府网站设计影视剪辑培训机构排名
  • 网站开发论文近三年的参考文献百度163黄页关键词挖掘
  • 网站开发和app开发哪个难网站优化排名网站
  • 淮安企业网站建设关键词查询工具免费
  • 无锡专业网站营销竞价托管如何托管
  • 权威的公司网站制作建站公司
  • 动态网站开发实训课程标准做网络推广有前途吗
  • 做画册好的国外网站推荐seo是搜索引擎优化吗
  • 下载建网站免费创建网站
  • 动态网站建设实训目的网站空间费用一年多少
  • 绘制网站地图2024年新闻摘抄十条
  • 做网站一般用什么语言百度推广技巧方法
  • 个人静态网页制作免费seo排名软件
  • 上海橙子建站最近国际新闻大事20条
  • 北京商城网站建设报价独立站seo推广