package com.example.myrxjavatest;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.provider.Telephony;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Observer;
import rx.Scheduler;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.functions.Action1;
import rx.functions.Func0;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
public class MyActicity1 extends AppCompatActivity {
Context context;
private ImageView imageView;
private ArrayList<Student> arrayList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
// createObserver();
// createObserverable();
// test1();
// test2();
// test3();
// test5("");
// test6("");
// initData();
test7("");
}
private void initData() {
Student student1 = new Student("kebi", "16", "90", "91", "92");
Student student2 = new Student("kebi", "17", "80", "81", "92");
Student student3 = new Student("kate", "18", "70", "71", "72");
Student student4 = new Student("laoliu", "19", "60", "61", "62");
arrayList.add(student1);
arrayList.add(student2);
arrayList.add(student3);
arrayList.add(student4);
}
private void test7(String s2) {
Observable.create(new Observable.OnSubscribe<ArrayList<Student>>() {
@Override
public void call(Subscriber<? super ArrayList<Student>> subscriber) {
initData();//比如是数据库查询,耗时 io
subscriber.onNext(arrayList);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<ArrayList<Student>, Observable<Student>>() {
@Override
public Observable<Student> call(ArrayList<Student> students) {
return Observable.from(students);
}
})
.filter(new Func1<Student, Boolean>() {
@Override
public Boolean call(Student student) {
return student.getName().endsWith("kebi");
}
})
.filter(new Func1<Student, Boolean>() {
@Override
public Boolean call(Student student) {
return student.getAge().endsWith("17");
}
})
.subscribe(new Subscriber<Student>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Student student) {
Toast.makeText(context, "<><><><><><>" + student.toString(), Toast.LENGTH_SHORT).show();
}
});
}
private void test6(String s) {
Observable
.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
try {
is = context.getAssets().open("test.json");
bis = new BufferedInputStream(is);
bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 4];
int len = -1;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
is.close();
bis.close();
bos.flush();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
is = context.getAssets().open("test.json");
bis = new BufferedInputStream(is);
bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 4];
int len = -1;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
is.close();
bis.close();
bos.flush();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
subscriber.onNext(bos.toString());
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Log.d("TAG", "<><><><><><><><><>:" + s);
}
});
}
InputStream is = null;
BufferedInputStream bis = null;
ByteArrayOutputStream bos = null;
private void test5(final String file) {
Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext(file);
}
}).observeOn(Schedulers.io())
.map(new Func1<String, String>() {
@Override
public String call(String s) {
try {
is = context.getAssets().open("test.json");
bis = new BufferedInputStream(is);
bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 4];
int len = -1;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
is.close();
bis.close();
bos.flush();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return bos.toString();
}
}).subscribe(new Subscriber<String>() {
@Override
public void onStart() {
super.onStart();
}
@Override
public void onCompleted() {
Log.d("TAG", "<><><><><><><><><>:COMPLETE");
}
@Override
public void onError(Throwable e) {
Log.d("TAG", "<><><><><><><><><>:ONERROR");
}
@Override
public void onNext(String s) {
Log.d("TAG", "<><><><><><><><><>:" + s);
}
});
}
private void test4(final String file) {
Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext(file);
}
}).map(new Func1<String, Drawable>() {
@Override
public Drawable call(String s) {
Drawable drawable = null;
return drawable;
}
}).subscribe(new Subscriber<Drawable>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Drawable drawable) {
ImageView imageView = new ImageView(MyActicity1.this);
imageView.setImageDrawable(drawable);
}
});
}
// }
private void test3() {
Observable.just("1", "2", "3")
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.d("TAG", "<><><><><><><><><>:OnNext" + s);
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
Log.d("TAG", "<><><><><><><><><>:ERROR");
}
}, new Action0() {
@Override
public void call() {
Log.d("TAG", "<><><><><><><><><>:COMPLETE");
}
});
}
private void test2() {
Observable<String> observable = Observable.just("1", "2", "3");
observable.subscribe(new Observer<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Log.d("TAG", "<>>>>><><><><><><><><><><><><><>:" + s);
}
});
}
private void test1() {
Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("111");
subscriber.onNext("222");
subscriber.onNext("333");
}
}).subscribe(new Observer<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Log.d("TAG", "<>>>>><><><><><><><><><><><><><>:" + s);
}
});
}
private void createObserverable() {
String[] str = {"0", "1", "2"};
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
}
});
Observable<String[]> observable1 = Observable.create(new Observable.OnSubscribe<String[]>() {
@Override
public void call(Subscriber<? super String[]> subscriber) {
}
});
}
private void createObserver() {
Observer<String> observer = new Observer<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
};
}
public <T>Observable.Transformer<T,T> ioMain(){
return new Observable.Transformer<T, T>() {
@Override
public Observable<T> call(Observable<T> tObservable) {
return tObservable.observeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
};
}
}
观察者模式RXjava
猜你喜欢
转载自blog.csdn.net/lk2021991/article/details/79236083
今日推荐
周排行