rx java android

public class MainActivity extends Activity {
	private Button btn;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn=(Button) findViewById(R.id.btn);
	//	Stars star= (Stars) findViewById(R.id.stars1);
		/*LinearLayout ll=(LinearLayout) findViewById(R.id.ll);
		Stars s=new Stars(this, Color.YELLOW, 40);
		ll.addView(s);
		*/
		_getBufferedSubscription();
		
	}
	 private Subscription _getBufferedSubscription() {
		 ViewObservable.clicks(btn).map(new Func1<OnClickEvent, Integer>() {
			@Override
			public Integer call(OnClickEvent arg0) {
				Log.i("zhouke", "call.."+Thread.currentThread().getName());
				return 1;
			}
		}).observeOn(AndroidSchedulers.mainThread()).buffer(2, TimeUnit.SECONDS).subscribe(new Observer<List<Integer>>() {

			@Override
			public void onCompleted() {
				
			}

			@Override
			public void onError(Throwable arg0) {
				
			}

			@Override
			public void onNext(List<Integer> arg0) {
				Log.i("zhouke", "onNext.."+Thread.currentThread().getName()+"::"+arg0.size());
			}

		});
		 return null;
	 }
}
</pre><pre name="code" class="java">
</pre><p>06-16 16:45:45.378: I/zhouke(26199): onNext..RxComputationThreadPool-1::006-16 16:45:46.005: I/zhouke(26199): call..main06-16 16:45:46.832: I/zhouke(26199): call..main06-16 16:45:47.294: I/zhouke(26199): call..main06-16 16:45:47.378: I/zhouke(26199): onNext..RxComputationThreadPool-1::306-16 16:45:49.379: I/zhouke(26199): onNext..RxComputationThreadPool-1::0</p><p>以上是打印的log</p><p></p><div> RXJava响应式编程:<img src="file:///C:\Users\Administrator\AppData\Roaming\Tencent\QQ\Temp\%W@GJ$ACOF(TYDYECOKVDYB.png" alt="" />http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0430/2815.html </div><div><pre name="code" class="java">package com.cs.stars;

import java.util.concurrent.TimeUnit;

import rx.Observable;
import rx.Observer;
import rx.Subscription;
import rx.android.app.AppObservable;
import rx.android.schedulers.AndroidSchedulers;
import rx.android.widget.OnTextChangeEvent;
import rx.android.widget.WidgetObservable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.EditText;

public class MyFragment extends Fragment {
	private EditText et;
	private Subscription _subscription;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View rootView = inflater.inflate(R.layout.fragcontent, null);
		et=(EditText) rootView.findViewById(R.id.et);
		Observable<OnTextChangeEvent> textobservable = WidgetObservable
				.text(et);
		_subscription = AppObservable.bindFragment(
				this,
				textobservable.debounce(400, TimeUnit.MILLISECONDS).observeOn(
						AndroidSchedulers.mainThread())).subscribe(_getSearchObserver());
		return rootView;
	}

	private Observer<OnTextChangeEvent> _getSearchObserver() {
		return new Observer<OnTextChangeEvent>() {
			@Override
			public void onCompleted() {
				Log.i("zhouke", "onCompleted:");
			}

			@Override
			public void onError(Throwable e) {
				Log.i("zhouke", "onError:"+e);
			}

			@Override
			public void onNext(OnTextChangeEvent onTextChangeEvent) {
				Log.i("zhouke", "onNext:"+onTextChangeEvent.text().toString()+":"+Thread.currentThread().getName());
			}
		};
	}
}


监听文本改变的



helloworld rxjava


  

  public void init(){
       // RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,
        //一个Observable可以发出零个或者多个事件,知道结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束
        //Rxjava的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。
        Observable<String> observable=Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                subscriber.onNext("hello world");
                subscriber.onCompleted();
            }
        });
        Subscriber<String> subscriber=new Subscriber<String>() {
            @Override
            public void onCompleted() {
                 Log.i("zhouke","onCompleted");
            }

            @Override
            public void onError(Throwable e) {
                Log.i("zhouke","onError");
            }

            @Override
            public void onNext(String s) {
                Log.i("zhouke","onNext");
            }
        };
        observable.subscribe(subscriber);//完成了subscriber对observable的订阅。
    }

  简单方式:

  

 Observable<String> observable=Observable.just("helloworld", "zhoukeke");
        Action1<String> action1=new Action1<String>() {
            @Override
            public void call(String s) {
                Log.i("zhouke",s+":"+Thread.currentThread().getName());
            }
        };
        observable.subscribe(action1);





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值