rx.Observable.debounce()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(10.2k)|赞(0)|评价(0)|浏览(172)

本文整理了Java中rx.Observable.debounce()方法的一些代码示例,展示了Observable.debounce()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Observable.debounce()方法的具体详情如下:
包路径:rx.Observable
类名称:Observable
方法名:debounce

Observable.debounce介绍

[英]Returns an Observable that mirrors the source Observable, except that it drops items emitted by the source Observable that are followed by newer items before a timeout value expires. The timer resets on each emission.

Note: If items keep being emitted by the source Observable faster than the timeout then no items will be emitted by the resulting Observable.

Information on debounce vs throttle:

代码示例

代码示例来源:origin: BaronZ88/MinimalistWeather

  1. @Override
  2. public boolean onOptionsItemSelected(MenuItem item) {
  3. int id = item.getItemId();
  4. if (id == R.id.action_search) {
  5. SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
  6. RxSearchView.queryTextChanges(searchView)
  7. .map(charSequence -> charSequence == null ? null : charSequence.toString().trim())
  8. .throttleLast(100, TimeUnit.MILLISECONDS)
  9. .debounce(100, TimeUnit.MILLISECONDS)
  10. .observeOn(AndroidSchedulers.mainThread())
  11. .subscribe(searchText -> selectCityFragment.cityListAdapter.getFilter().filter(searchText));
  12. return true;
  13. }
  14. return super.onOptionsItemSelected(item);
  15. }

代码示例来源:origin: THEONE10211024/RxJavaSamples

  1. @Override
  2. public void onActivityCreated(@Nullable Bundle savedInstanceState) {
  3. super.onActivityCreated(savedInstanceState);
  4. _setupLogger();
  5. _subscription = RxTextView.textChangeEvents(_inputSearchText)//
  6. .debounce(400, TimeUnit.MILLISECONDS)// default Scheduler is Computation
  7. .observeOn(AndroidSchedulers.mainThread())//
  8. .subscribe(_getSearchObserver());
  9. }

代码示例来源:origin: cn-ljb/rxjava_for_android

  1. .debounce(150, TimeUnit.MILLISECONDS) //debounce:每次文本更改后有150毫秒的缓冲时间,默认在computation调度器
  2. .observeOn(AndroidSchedulers.mainThread())
  3. .doOnNext(new Action1<TextViewTextChangeEvent>() {

代码示例来源:origin: jhusain/learnrxjava

  1. public static void main(String args[]) {
  2. // debounce to the last value in each burst
  3. //intermittentBursts().debounce(10, TimeUnit.MILLISECONDS).toBlocking().forEach(System.out::println);
  4. /* The following will emit a buffered list as it is debounced */
  5. // first we multicast the stream ... using refCount so it handles the subscribe/unsubscribe
  6. Observable<Integer> burstStream = intermittentBursts().take(20).publish().refCount();
  7. // then we get the debounced version
  8. Observable<Integer> debounced = burstStream.debounce(10, TimeUnit.MILLISECONDS);
  9. // then the buffered one that uses the debounced stream to demark window start/stop
  10. Observable<List<Integer>> buffered = burstStream.buffer(debounced);
  11. // then we subscribe to the buffered stream so it does what we want
  12. buffered.toBlocking().forEach(System.out::println);
  13. }

代码示例来源:origin: THEONE10211024/RxJavaSamples

  1. @Override
  2. public void onStart() {
  3. super.onStart();
  4. _subscriptions = new CompositeSubscription();
  5. Observable<Object> tapEventEmitter = _rxBus.toObserverable().share();
  6. _subscriptions//
  7. .add(tapEventEmitter.subscribe(new Action1<Object>() {
  8. @Override
  9. public void call(Object event) {
  10. if (event instanceof RxBusDemoFragment.TapEvent) {
  11. _showTapText();
  12. }
  13. }
  14. }));
  15. Observable<Object> debouncedEmitter = tapEventEmitter.debounce(1, TimeUnit.SECONDS);
  16. Observable<List<Object>> debouncedBufferEmitter = tapEventEmitter.buffer(debouncedEmitter);
  17. _subscriptions//
  18. .add(debouncedBufferEmitter//
  19. .observeOn(AndroidSchedulers.mainThread())//
  20. .subscribe(new Action1<List<Object>>() {
  21. @Override
  22. public void call(List<Object> taps) {
  23. _showTapCount(taps.size());
  24. }
  25. }));
  26. }

代码示例来源:origin: SmartDengg/sug-debounce

  1. @Override public Object call(Object observable) {
  2. return ((Observable) observable).debounce(time, unit)
  3. .observeOn(AndroidSchedulers.mainThread());
  4. }
  5. }

代码示例来源:origin: leeowenowen/rxjava-examples

  1. @Override
  2. public void run() {
  3. Observable.create(new Observable.OnSubscribe<Integer>() {
  4. @Override
  5. public void call(Subscriber<? super Integer> subscriber) {
  6. subscriber.onNext(1);
  7. sleep(500);
  8. subscriber.onNext(2);
  9. sleep(1000);
  10. subscriber.onNext(3);
  11. sleep(2000);
  12. subscriber.onNext(4);
  13. subscriber.onCompleted();
  14. }
  15. })
  16. .subscribeOn(Schedulers.newThread())
  17. .debounce(1, TimeUnit.SECONDS)
  18. .subscribe(new Action1<Integer>() {
  19. @Override
  20. public void call(Integer integer) {
  21. log(integer);
  22. }
  23. });
  24. }
  25. });

代码示例来源:origin: androidmalin/RengwuxianRxjava

  1. /**
  2. * EditText,每隔500ms,去响应变化
  3. */
  4. private void method18() {
  5. mSearchEditText.setVisibility(View.VISIBLE);
  6. RxTextView.textChangeEvents(mSearchEditText)
  7. .debounce(500, TimeUnit.MILLISECONDS)
  8. .observeOn(AndroidSchedulers.mainThread())
  9. .subscribe(new Subscriber<TextViewTextChangeEvent>() {
  10. @Override
  11. public void onCompleted() {
  12. }
  13. @Override
  14. public void onError(Throwable e) {
  15. }
  16. @Override
  17. public void onNext(TextViewTextChangeEvent textViewTextChangeEvent) {
  18. String changedMessage = textViewTextChangeEvent.text().toString();
  19. Logger.d(TAG, changedMessage);
  20. if (!TextUtils.isEmpty(changedMessage)) {
  21. ToastUtil.getInstance().showToast(MainActivity.this, changedMessage);
  22. }
  23. }
  24. });
  25. }

代码示例来源:origin: com.netflix.rxjava/rxjava-core

  1. return debounce(timeout, unit, Schedulers.computation());

代码示例来源:origin: eo/mdx

  1. @Override
  2. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  3. inflater.inflate(R.menu.fragment_icons, menu);
  4. MenuItem searchItem = menu.findItem(R.id.action_search);
  5. SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
  6. searchView.setQueryHint(getString(R.string.icon_search_hint));
  7. // reset max width to device width to make search view full width
  8. searchView.setMaxWidth(getResources().getDisplayMetrics().widthPixels);
  9. RxSearchView.queryTextChanges(searchView)
  10. .debounce(200, TimeUnit.MILLISECONDS)
  11. .skip(1) // skip initial unnecessary change
  12. .observeOn(AndroidSchedulers.mainThread())
  13. .subscribe(new Action1<CharSequence>() {
  14. @Override
  15. public void call(CharSequence query) {
  16. mIconsPresenter.loadIcons(query);
  17. }
  18. });
  19. }

代码示例来源:origin: gitskarios/GithubAndroidSdk

  1. public Observable<K> observable() {
  2. return getApiObservable(getRestAdapter()).retry(this::retry).debounce(100, TimeUnit.MILLISECONDS);
  3. }

代码示例来源:origin: chiclaim/AndroidMVVMSample

  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. SearchDebounceBinding binding = DataBindingUtil.setContentView(this,
  5. R.layout.activity_search_debounce);
  6. adapter = new SearchAdapter(this);
  7. RecyclerViewUtils.setLinearManagerAndAdapter(binding.recyclerView, adapter);
  8. binding.recyclerView.addItemDecoration(DividerItemDecoration.newVertical(this,
  9. R.dimen.list_divider_height, R.color.divider_color));
  10. //===========================@TODO
  11. //1,避免EditText没改变一次就请求一次.
  12. //2,避免频繁的请求,多个导致结果顺序错乱,最终的结果也就有问题.
  13. // 但是对于第二个问题,也不能彻底的解决. 比如停止输入400毫秒后,
  14. // 那么肯定会开始请求Search接口, 但是用户又会输入新的关键字,
  15. // 这个时候上个请求还没有返回, 新的请求又去请求Search接口.
  16. // 这个时候有可能最后的一个请求返回, 第一个请求最后返回,导致搜索结果不是想要的.
  17. //===========================@TODO
  18. subscription = RxTextView.textChangeEvents(binding.inputSearch)
  19. .debounce(400, TimeUnit.MILLISECONDS)
  20. .observeOn(AndroidSchedulers.mainThread())
  21. .subscribe(getSearchObserver());
  22. }

代码示例来源:origin: nurkiewicz/rxjava-book-examples

  1. @Test
  2. public void sample_225() throws Exception {
  3. Observable<BigDecimal> prices = tradingPlatform.pricesOf("NFLX");
  4. Observable<BigDecimal> debounced = prices.debounce(100, MILLISECONDS);
  5. prices
  6. .debounce(x -> {
  7. boolean goodPrice = x.compareTo(BigDecimal.valueOf(150)) > 0;
  8. return Observable
  9. .empty()
  10. .delay(goodPrice? 10 : 100, MILLISECONDS);
  11. });
  12. }

代码示例来源:origin: nurkiewicz/rxjava-book-examples

  1. @Test
  2. public void sample_242() throws Exception {
  3. Observable
  4. .interval(99, MILLISECONDS)
  5. .debounce(100, MILLISECONDS);
  6. }

代码示例来源:origin: nurkiewicz/rxjava-book-examples

  1. @Test
  2. public void sample_60() throws Exception {
  3. final Observable<Long> upstream = Observable.interval(99, MILLISECONDS);
  4. upstream
  5. .debounce(100, MILLISECONDS)
  6. .timeout(1, SECONDS, upstream
  7. .take(1)
  8. .concatWith(
  9. upstream.debounce(100, MILLISECONDS)));
  10. }

代码示例来源:origin: SmartDengg/RxBlur

  1. @Override public void setListener() {
  2. Observable<TextViewTextChangeEvent> radiusObservable =
  3. RxTextView.textChangeEvents(radiusEt).skip(1);
  4. Observable<TextViewTextChangeEvent> durationObservable =
  5. RxTextView.textChangeEvents(durationEt).skip(1);
  6. Observable.combineLatest(radiusObservable, durationObservable,
  7. new Func2<TextViewTextChangeEvent, TextViewTextChangeEvent, Boolean>() {
  8. @Override public Boolean call(TextViewTextChangeEvent radiusEvent,
  9. TextViewTextChangeEvent durationEvent) {
  10. radius = radiusEvent.text().toString();
  11. duration = durationEvent.text().toString();
  12. return !TextUtils.isEmpty(radius) && !TextUtils.isEmpty(duration);
  13. }
  14. })
  15. .debounce(300, TimeUnit.MILLISECONDS)
  16. .compose(RxAnimatorBlurActivity.this.<Boolean>bindUntilEvent(ActivityEvent.DESTROY))
  17. .observeOn(AndroidSchedulers.mainThread())
  18. .startWith(false)
  19. .subscribe(new Action1<Boolean>() {
  20. @Override public void call(Boolean aBoolean) {
  21. blurBtn.setEnabled(aBoolean);
  22. }
  23. });
  24. }

代码示例来源:origin: nurkiewicz/rxjava-book-examples

  1. @Test
  2. public void sample_249() throws Exception {
  3. Observable
  4. .interval(99, MILLISECONDS)
  5. .debounce(100, MILLISECONDS)
  6. .timeout(1, SECONDS);
  7. }

代码示例来源:origin: nurkiewicz/rxjava-book-examples

  1. @Test
  2. public void sample_72() throws Exception {
  3. final Observable<Long> upstream = Observable.interval(99, MILLISECONDS);
  4. upstream
  5. .debounce(100, MILLISECONDS)
  6. .timeout(1, SECONDS, upstream
  7. .take(1)
  8. .concatWith(
  9. upstream
  10. .debounce(100, MILLISECONDS)
  11. .timeout(1, SECONDS, upstream)));
  12. }

代码示例来源:origin: nurkiewicz/rxjava-book-examples

  1. @Test
  2. public void sample_121() throws Exception {
  3. EditText latText = null;//...
  4. EditText lonText = null;//...
  5. Observable<Double> latChanges = RxTextView
  6. .afterTextChangeEvents(latText)
  7. .flatMap(toDouble());
  8. Observable<Double> lonChanges = RxTextView
  9. .afterTextChangeEvents(lonText)
  10. .flatMap(toDouble());
  11. Observable<Cities> cities = Observable
  12. .combineLatest(latChanges, lonChanges, toPair())
  13. .debounce(1, TimeUnit.SECONDS)
  14. .flatMap(listCitiesNear());
  15. }

代码示例来源:origin: nurkiewicz/rxjava-book-examples

  1. Observable<Long> timedDebounce(Observable<Long> upstream) {
  2. Observable<Long> onTimeout = upstream
  3. .take(1)
  4. .concatWith(defer(() -> timedDebounce(upstream)));
  5. return upstream
  6. .debounce(100, MILLISECONDS)
  7. .timeout(1, SECONDS, onTimeout);
  8. }

相关文章

Observable类方法