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

wordpress更改链接后网站打不开彩页设计模板免费

wordpress更改链接后网站打不开,彩页设计模板免费,做动态效果的网站,qq做兼职给网站给你前言 其实快速点击是个很好解决的问题#xff0c;但是如何优雅的去解决确是一个难题#xff0c;本文主要是记录一些本人通过解决快速点击的过程中脑海里浮现的一些对这个问题的深思。 作者#xff1a;流浪汉kylin 链接#xff1a;https://juejin.cn/post/7197337416096055…前言 其实快速点击是个很好解决的问题但是如何优雅的去解决确是一个难题本文主要是记录一些本人通过解决快速点击的过程中脑海里浮现的一些对这个问题的深思。 作者流浪汉kylin 链接https://juejin.cn/post/7197337416096055351 1. AOP 可以通过AOP来解决这个问题而且AOP解决的方法也很优雅在开源上也应该是能找到对应的成熟框架。 AOP来解决这类问题其实是近些年一个比较好的思路包括比如像数据打点通过AOP去处理也能得到一个比较优雅的效果。牛逼的人甚至可以不用别人写的框架自己去封装就行我因为对这个技术栈不熟这里就不献丑了。总之如果你想快速又简单的处理这种问题AOP是一个很好的方案 2. kotlin 使用kotlin的朋友有福了kotlin中有个概念是扩展函数使用扩展函数去封装放快速点击的操作逻辑也能很快的实现这个效果。它的好处就是突出两个字“方便” 那是不是我用java不用kotlin就实现不了kotlin这个扩展函数的效果当然不是了。这让我想到一件事我也有去看这类问题的文章看看有没有哪个大神有比较好的思路然后我注意到有人就说用扩展函数就行不用这么麻烦。 OK那扩展函数是什么它的原理是什么不就是静态类去套一层吗那用java当然能实现为什么别人用java去封装这套逻辑就是麻烦呢代码不都是一样只不过kotlin帮你做了而已。所以我觉得kotlin的扩展函数效果是方便但从整体的解决思路上看缺少点优雅。 3. 流 简单来说也有很多人用了Rxjava或者kotlin的flow去实现像这种实现也就是能方便而已在底层上并没有什么实质性的突破所以就不多说了说白了就是和上面一样。 4. 通过拦截 因为上面已经说了kt的情况所以接下来的相关代码都会用java来实现。通过拦截来达到防止快速点击的效果而拦截我想到有2种方式第一种是拦截事件就是基于事件分发机制去实现第二种是拦截方法。 相对而言其实我觉得拦截方法会更加安全举个场景假如你有个页面然后页面正在到计算到计算完之后会显示一个按钮点击后弹出一个对话框。然后过了许久改需求了改成到计算完之后自动弹出对话框。但是你之前的点击按钮弹出对话框的操作还需要保留。那就会有可能因为某些操作导致到计算完的一瞬间先显示按钮这时你以迅雷不及掩耳的速度点它那就弹出两次对话框。 1拦截事件 其实就是给事件加个判断判断两次点击的时间如果在某个范围就不触发这可能是大部分人会用的方式。 正常情况下我们是无法去入侵事件分发机制的只能使用它提供的方法去操作比如我们没办法在外部影响dispatchTouchEvent这些方法。当然不正常的情况下也许可以你可以尝试往hook的方向去思考能不能实现我这边就不思考这种情况了。 public class FastClickHelper {private static long beforeTime 0; private static MapView, View.OnClickListener map new HashMap();public static void setOnClickListener(View view, View.OnClickListener onClickListener) { map.put(view, onClickListener); view.setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { long clickTime SystemClock.elapsedRealtime(); if (beforeTime ! 0 clickTime - beforeTime 1000) { return; } beforeTime clickTime;View.OnClickListener relListener map.get(v); if (relListener ! null) { relListener.onClick(v); } } }); } } 简单来写就是这样其实这个就和上面说的kt的扩展函数差不多。调用的时候就 FastClickHelper.setOnClickListener(view, this); 但是能看出这个只是针对单个view去配置如果我们想其实页面所有view都要放快速点击只不过某个view需要快速点击比如抢东西类型的那肯定不能防。所以给每个view单独去配置就很麻烦没关系我们可以优化一下 public class FastClickHelper {private MapView, Integer map; private HandlerThread mThread;public void init(ViewGroup viewGroup) { map new ConcurrentHashMap(); initThread(); loopAddView(viewGroup);for (View v : map.keySet()) { v.setOnTouchListener(new View.OnTouchListener() { Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() MotionEvent.ACTION_DOWN) { int state map.get(v); if (state 1) { return true; } else { map.put(v, 1); block(v); } } return false; } }); } }private void initThread() { mThread new HandlerThread(LAZY_CLOCK); mThread.start(); }private void block(View v) { // 切条线程处理 Handler handler new Handler(mThread.getLooper()); handler.postDelayed(new Runnable() { Override public void run() { if (map ! null) { map.put(v, 0); } } }, 1000); }private void exclude(View... views) { for (View view : views) { map.remove(view); } }private void loopAddView(ViewGroup viewGroup) { for (int i 0; i viewGroup.getChildCount(); i) { if (viewGroup.getChildAt(i) instanceof ViewGroup) { ViewGroup vg (ViewGroup) viewGroup.getChildAt(i); map.put(vg, 0); loopAddView(vg); } else { map.put(viewGroup.getChildAt(i), 0); } } }public void onDestroy() { try { map.clear(); map null; mThread.interrupt(); } catch (Exception e) { e.printStackTrace(); } } } 我把viewgroup当成入参然后给它的所有子view都设置因为onclicklistener比较常用所以改成了设置setOnTouchListener当然外部如果给view设置了setOnTouchListener去覆盖我这的set那就只能自己做特殊处理了。 在外部直接调用 FastClickHelper fastClickHelper new FastClickHelper();fastClickHelper.init((ViewGroup) getWindow().getDecorView()); 如果要想让某个view不要限制快速点击的话就调用exclude方法。这里要注意使用完之后释放资源要调用onDestroy方法释放资源。 关于这个部分的思考其实上面的大家都会也基本是这样去限制但是就是即便我用第二种代码也要每个页面都调用一次而且看起来多少差点优雅。 首先我想的办法是在事件分发下发的过程去做处理就是在viewgroup的dispatchTouchEvent或者onInterceptTouchEvent这类方法里面但是我简单看了源码是没有提供方法出来的也没有比较好去hook的地方所以只能暂时放弃思考在这个下发流程去做手脚。 补充一下如果你是自定义view那肯定不会烦恼这个问题但是你总不能所有的view都做成自定义的吧。 其次我想怎么能通过不写逻辑代码能实现这个效果但总觉得这个方向不就是AOP吗或者不是通过开发层面在开发结束后想办法去注入字节码等操作我觉得要往这个方向思考的话最终的实现肯定不是代码层面去实现的。 2拦截方法 上面也说了相对于拦截事件假设如果都能实现的情况下我更倾向于去拦截方法。 因为从这层面上来说如果实现拦截方法或者说能实现中断方法那就不只是能做到防快速点击而是能给方法去定制相对应的规则比如某个方法在1秒的间隔内只能调用一次这个就是防快速点击的效果嘛比如某个方法我限制只能调一次如果能实现我就不用再额外写判断这个方法调用一次过后我设置一个布尔类型然后下次调用再判断这个布尔类型来决定是否调用 那现在是没办法实现拦截方法吗当然有办法只不过会十分的不优雅比如一个方法是这样的。 public void fun(){ // todo 第1步 // todo 第2步 // todo ...... // todo 第n步} 那我可以封装一个类里面去封装一些策略然后根据策略再去决定方法要不要执行这些步骤那可能就会写成 public void fun(){ new FunctionStrategy(FunctionStrategy.ONLY_ONE, new CallBack{ Override public void onAction() { // todo 第1步 // todo 第2步 // todo ...... // todo 第n步 } })} 这样就实现了比如只调用一次具体的只调用一次的逻辑就写在FunctionStrategy里面然后第2次第n次就不会回调。当然我这是随便乱下来表达这个思路现实肯定不能这样写。首先这样写就很不优雅其次也会存在很多问题扩展性也很差。 那在代码层面还有其它办法拦截或者中断方法吗在代码层还真有办法中断方法没错那就是抛异常但是话说回来你也不可能在每个地方都try-catch吧不切实际。 目前对拦截方法或者中断方法我是没想到什么好的思路了但是我觉得如果能实现对防止快速点击来说肯定会是一个很好的方案。
http://www.hkea.cn/news/14482497/

相关文章:

  • 网站seo啥意思怎么做互联网营销方式
  • 免费创建网站 优帮云移动网站建设初学视频教程
  • 网站建设设计公司类网站织梦模板(带手机端)东营哪里有做网络推广的
  • 怎么做网站埋点家居网站建设效果
  • 贵州网站中企动力建设上海专业做网站的
  • 网站特效怎么做120平米装修10万够吗
  • 长春企业网站排名优化网站建设方案 文库
  • 有一个网站叫浪什么怎样生成链接
  • 网站太原wangz建设单页网站快速收录
  • 网站设计的公司价格深圳优化新材料
  • 闽清住房和城乡建设局网站WordPress pdo mysql
  • 杭州网站设计公司排名网站建设大作业提交要求
  • 律师网站建设哪家专业网站设计需要的元素
  • 浙江省火电建设公司网站家具设计用什么软件最好
  • 国内做新闻比较好的网站有哪些教育网站制作运营
  • django做的网站模板北京发布会直播
  • 网站建设价格差别为什么这么大重庆电子商务网站seo
  • 淘宝联盟怎么自己做网站推广免费查企业信息查询
  • 门户网站集群建设小程序开发哪家好
  • 莆田网站开发wordpress后台打开太慢
  • 重庆有效的网站推广咨询公司收费标准
  • 专业的聊城网站优化河源市建设厅网站
  • asp.net商务网站 包括哪些文件销售管理app软件
  • 用ps怎么做网站重庆新闻联播今天
  • 网站的宽度网站建设的参考书籍
  • 系网站建设总结报告网站建设河南
  • 做文化墙的网站宁波市城乡和建设网站
  • 苏州做网站公司 速选苏州聚尚网络wordpress去除谷歌
  • 网站推广经验杂谈跟换网站域名
  • 如何建立公司网站建议和规则信息发布型网站