RxAndroid初学记录
来源:互联网 发布:上海对外经贸大学知乎 编辑:程序博客网 时间:2024/05/16 14:24
Android Studio使用RxAndroid需要在app下的gradle文件配置如下:(个人使用了RxBinding,所以会有相关的支持)
<pre name="code" class="java"> compile 'io.reactivex:rxandroid:1.2.1' compile 'io.reactivex:rxjava:1.1.9' compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
使用传统的OnClickListener监听:
Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { login();//请求网络,登录 } });
此时若手指抖动,多点击几次屏幕,此时我在1s内连续点击三次屏幕,则可以看到日志输出,此时访问了三次网络
使用RxBinding去监听控件的点击:
Button button = (Button) findViewById(R.id.button); RxView.clicks(button) .throttleFirst(500, TimeUnit.MILLISECONDS)//消除手指抖动造成的多次连击 .subscribe(new Action1<Void>() { @Override public void call(Void aVoid) { login(); } });此时我在1s内多次点击屏幕,日志输出如下,只访问一次网络请求
使用throttleFirst设置,可以消除手指抖动时造成的多次点击响应
使用RxAndroid+Okhttp访问网络请求数据:
public static Observable postRequest(final String url, final Map<String, String> params){ return Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { FormBody.Builder builder = new FormBody.Builder(); for (String key : params.keySet()) builder.add(key, params.get(key)); FormBody build = builder.build(); Request request = new Request.Builder().url(url).post(build).build(); OkHttpClient okHttpClient = new OkHttpClient(); try { Response response = okHttpClient.newCall(request).execute(); if (response.code() == 200) if (!subscriber.isUnsubscribed()) subscriber.onNext(response.body().string()); } catch (IOException e) { subscriber.onError(e); } finally { subscriber.onCompleted(); } } }); }调用方法如下:
postRequest(url, params).subscribeOn(Schedulers.io())//在io线程中获取网络数据.observeOn(AndroidSchedulers.mainThread())//执行操作在UI线程.subscribe(new Observer<String>() { @Override public void onCompleted() { Log.e(TAG, "onCompleted");//当所有的onNext()调用完成后会调用此方法结束 } @Override public void onError(Throwable e) { Log.e(TAG, e.getMessage()); } @Override public void onNext(String s) { Log.e(TAG, s);//获取数据 } });
0 0
- RxAndroid初学记录
- RxAndroid使用入门记录
- Rxandroid+Retrofit学习记录
- RxJava与RxAndroid学习记录
- RxJava RxAndroid 1.2 学习记录
- RxJava RxAndroid 2.0 学习记录
- 初学记录
- RxAndroid
- RxAndroid
- RxAndroid
- RxAndroid
- RXAndroid
- RxAndroid
- RXAndroid
- 初学pb,读书记录
- 初学Orcale记录
- 初学MySql 记录1
- 初学D3D,学习记录。
- Hadoop 基本操作命令
- 微软面试题【飞机加油问题】题解
- PHP4和PHP5共存的环境(主力为PHP4)中PHP5在命令行跑PHP文件中遇到No input file specified.错误解决办法
- redis与memcached对比
- ViewPager 禁止滑动
- RxAndroid初学记录
- Exercise in grImport
- JS中cookie的使用
- 关于MVC中BundleCollection压缩js css文件 发布后获取失败的问题
- JAVA数组的定义以及使用1
- springMVC注解之 @ModelAttribute
- 人工智能中的bp算法
- HDU 2586 How far away?(LCA使用详解)
- codeforces 599 C. Day at the Beach【思维】