android使用throttle(节流阀)技术

Throttle技术主要用于防止系统因处理过多流量而崩溃,常见于异步操作。在Android中,当ContentObserver频繁触发onChange导致游标过多,可能导致内存不足。Throttle通过设置最小和最大超时时间来控制回调频率,避免过度查询。本文通过一个Throttle类的实现,详细解释了其工作原理和使用方法。
摘要由CSDN通过智能技术生成

throttle 技术其实并不提升性能,这个技术主要是防止系统被超过自己不能处理的流量给搞垮了,这其实是个保护机制。使用throttle技术一般来说是对于一些自己无法控制的系统,只要是异步,一般都会有throttle机制。

比如:
在android系统中大量是使用ContentObserver(ContentObserver用于监听数据变化),一般情况会在ContentObserver中的onChange方法作相关查询工作,也就说会生成游标。当某时瞬间游标生成过多(数据库查询极端频繁,但属于正常的插入,而且不能用批量插入),会导致内存不够而被系统自动终止该程序。这时我们就可以使用throttle技术。
代码如下:
public class Throttle {
    public static final boolean DEBUG = false; // Don't submit with true

    public static final int DEFAULT_MIN_TIMEOUT = 150;
    public static final int DEFAULT_MAX_TIMEOUT = 2500;
    /* package */ static final int TIMEOUT_EXTEND_INTERVAL = 500;

    private static Timer TIMER = new Timer();

    private final Clock mClock;
    private final Timer mTimer;

    /** Nam
在前端开发中,throttle(节流)是一种优化性能的技术,用于限制函数的执行频率。它可以确保一个函数在一定时间间隔内只被执行一次。在给定的时间间隔内,如果多次触发了该函数,只有第一次触发会立即执行,后续的触发会被忽略,直到时间间隔过去后,再次触发时才会执行。这样可以减少函数的执行次数,避免资源的浪费和性能的下降。 在给出的引用中,有三个例子展示了throttle的实现方式。和是两种常见的方法,分别使用了时间戳和定时器来实现节流。其中,使用时间戳记录上次触发的时间,并通过与当前时间的差值判断是否满足时间间隔,如果满足则执行函数。使用定时器,在函数执行后设置一个定时器,当定时器触发时执行函数,如果在定时器触发前再次触发了函数,则清除之前的定时器重新设置。 另外,是一种防抖(debounce)的例子,与节流类似,但是在时间间隔内的触发会重新计时,只有在一定时间内没有再次触发时才会执行函数。 需要注意的是,节流和防抖都是根据实际需求来选择使用的,具体使用哪种方式要根据具体的场景和需求来确定。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [前端性能优化——节流(throttle)](https://blog.csdn.net/weixin_43371610/article/details/100101268)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [js 函数防抖(debounce)函数节流(throttle)](https://blog.csdn.net/qq_27009517/article/details/118381886)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值