sy007 / DebouncePlugin

Android点击事件防抖动插件
Apache License 2.0
113 stars 16 forks source link

[功能建议]全局防抖 #12

Closed protectedMan closed 1 year ago

protectedMan commented 1 year ago

目前的防抖维度单个控件来控制的. 增加全局控件防抖的功能,即点击A控件再点击B控件,依然有防抖效果

希望可以增加相关配置,可以由使用者自由选择防抖维度

sy007 commented 1 year ago

目前的防抖维度单个控件来控制的. 增加全局控件防抖的功能,即点击A控件再点击B控件,依然有防抖效果

希望可以增加相关配置,可以由使用者自由选择防抖维度

感谢老哥提的建议。请问问下这个有实际用户操作场景吗?可以举例说明下,如果有价值我研究加下。

protectedMan commented 1 year ago

全局防抖的对多个不同控件之间点击效果比较好 现在防抖大多数都是为了防止接口重复请求. 如果做单控件防抖, 用户如果切换点击不同控件依然可以绕过防抖策略.(频繁点击不同控件这种场景不多, 但是确实有)

sy007 commented 1 year ago

全局防抖的对多个不同控件之间点击效果比较好 现在防抖大多数都是为了防止接口重复请求. 如果做单控件防抖, 用户如果切换点击不同控件依然可以绕过防抖策略.(频繁点击不同控件这种场景不多, 但是确实有)

好的,计划下个版本加上,得年后了。加好回复你哈。(ps:下个版本改动比较大)

sy007 commented 1 year ago

全局防抖的对多个不同控件之间点击效果比较好 现在防抖大多数都是为了防止接口重复请求. 如果做单控件防抖, 用户如果切换点击不同控件依然可以绕过防抖策略.(频繁点击不同控件这种场景不多, 但是确实有)

好的,计划下个版本加上,得年后了。加好回复你哈。(ps:下个版本改动比较大)

@protectedMan 你好,插件2.0.1版本支持了这个功能。在代理类中可以每个点击事件防抖状态唯一,也可以全局共享一个防抖状态,完全由你决定哈。请按照README集成下。

sy007 commented 1 year ago

全局防抖的对多个不同控件之间点击效果比较好 现在防抖大多数都是为了防止接口重复请求. 如果做单控件防抖, 用户如果切换点击不同控件依然可以绕过防抖策略.(频繁点击不同控件这种场景不多, 但是确实有)

好的,计划下个版本加上,得年后了。加好回复你哈。(ps:下个版本改动比较大)

@protectedMan 你好,插件2.0.1版本支持了这个功能。在代理类中可以每个点击事件防抖状态唯一,也可以全局共享一个防抖状态,完全由你决定哈。请按照README集成下。

@protectedMan 老哥,2.0.1 版本能满足你的需求吗?可以的话就先将Issues关闭了吧。

protectedMan commented 1 year ago

是不是保证所有的调用checkAny方法传入的uniqueId参数相同就可以全局共享一个防抖状态了是吧.

sy007 commented 1 year ago

你可以将ClickMethodProxy中的BounceChecker设置为静态,就会全局共享一个防抖状态了。

private static final BounceChecker S_CHECKER = new BounceChecker();

这是因为插桩后的伪代码是:

//MainActivity
private ClickMethodProxy clickMethodProxy;

public void onClick(View view){
  if(clickMethodProxy==null){
    clickMethodProxy= new ClickMethodProxy();
  }
  if(clickMethodProxy.xxx(param)){
     return;
   }
}

//OtherActivity
private ClickMethodProxy clickMethodProxy;

public void onClick(View view){
  if(clickMethodProxy==null){
    clickMethodProxy= new ClickMethodProxy();
  }
   if(clickMethodProxy.xxx(param)){
     return;
   }
}

当前你也可以自己创建类似于BounceChecker的工具类。