您的位置:首页 > 移动开发 > Android开发

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
相关文章推荐