Android开源框架————RxJava/RxAndroid入门
2017-07-29 10:54
393 查看
1、什么是RxJava/RxAndroid?
它是一种帮助你做异步的框架。2、RxJava/RxAndroid有什么好处?
Android本身提供了Hander和AsyncTask来进行异步操作,目的是让异步操作更为简洁,但RxJava/RxAndroid更为简洁,随着程序逻辑的复杂,依然能够保持简洁。3,RxJava/RxAndroid的使用。
本文针对的是RxJava/RxAndroid的使用,不针对原理的分析,目的是入门。rxJava中涉及到4个概念:
Observable(可观察者,即被观察者)、
Observer(观察者)、
subscribe(订阅)、事件。
Observable和
Observer通过
subscribe()方法实现订阅关系,从而
Observable可以在需要的时候发出事件来通知
Observer
数据刷新
简单实现如下:
1) 创建 Observer(被观察者对象)
//Observable部分,被观察者部分 Observable<String> myObservable=Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("我是被观察的对象"); subscriber.onCompleted(); } });
2) 创建Subscriber(观察者对象)
//Subscriber部分,观察者部分 Subscriber<String> mySubscriber=new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { text.setText(s); } };
3) Observer和Subscriber关联
myObservable.subscribe(mySubscriber);
具体实现方法:
1>在工程文件的Build.gradle(app)中添加依赖
compile 'io.reactivex:rxandroid:1.1.0' // RxAndroid compile 'io.reactivex:rxjava:1.1.0'
2>新建了一个Demo可简单展示
1、xml文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text0_simple1" android:text="你好"/> <Button android:id="@+id/button0_simple1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button0_simple1"/> </LinearLayout>
2、java文件
package com.example.app_rx_android; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.Button; import android.widget.TextView; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; import rx.Observable; import rx.Subscriber; public class Simple1Activity extends AppCompatActivity { @Bind(R.id.text0_simple1) TextView text0_simple1; @Bind(R.id.button0_simple1) Button button0_simple1; private static final String TAG="MainActivity"; private Subscriber<String> subscriber; private Observable<String> observable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple1); ButterKnife.bind(this); onCreateSubscriber(); } /** * 创建观察者对象 */ private void onCreateSubscriber(){ subscriber=new Subscriber<String>() { @Override public void onCompleted() { Log.d(TAG,"onCompleted"); } @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onNext(String s) { Log.d(TAG,"onNext"); text0_simple1.setText(s); } }; } private String getString0(){ return "我是尽途"; } private String getString1(){ return "你好,尽途"; } @OnClick(R.id.button0_simple1) public void onclick(){ createObservable(); } /** * 创建被观察者对象 */ private void createObservable(){ observable=Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext(getString0()); subscriber.onCompleted(); } }); observable.subscribe(subscriber);//实现关联 } }
3>实现效果和相关问题
代码片段中的ButterKnife为一个挺好用的view注入框架,在此不再赘述。
相关文章推荐
- Android编程入门--开源框架ButterKnife
- Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2
- Rxjava Rxandroid基本入门
- Retrofit+RxJava+RxAndroid+Gson快速构建网络框架
- 物联网平台机智云Android开源框架入门之旅(六)如何修改设备的名字,并且添加描述信息。
- android开源框架学习---RxJava
- RxJava/RxAndroid之快速入门3(转)
- 物联网平台机智云Android开源框架入门之旅(五) 分析怎么样把云端设备的信息状态同步到手机显示。
- 物联网平台机智云Android开源框架入门之旅(五) 分析怎么样把云端设备的信息状态同步到手机显示。
- 物联网平台机智云Android开源框架入门之旅(四) 分析怎么做好指令是否成功发送到云端的逻辑处理。
- 物联网平台机智云Android开源框架入门之旅(三)分析设备详情界面的中如何发送各种指令到云端。
- Android开源框架集合分享-响应式函数编程Rx
- Android响应式编程框架---RxJava&RxAndroid2.0使用笔记
- Android开源网络框架Retrofit(入门篇)
- 物联网平台机智云Android开源框架入门之旅(二)详细分析在设备列表的代码块,如何修改设备默认图片。
- Android-->RxJava/RxAndroid 入门初体验
- RxJava(RxAndroid)基本使用入门
- 物联网平台机智云Android开源框架入门之旅(一)认识框架结构,导入PK、APP的id和secret。
- Retrofit2.0+RxJava+RxAndroid——强强联合的网络请求框架
- Rxjava Rxandroid入门基础