Android开源框架————RxJava/RxAndroid入门

            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注入框架,在此不再赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值