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);