package com.example.administrator.rxjva20; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.util.concurrent.Callable; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; public class MainActivity extends AppCompatActivity { private Button but1; private TextView tv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); myOncick(); } private void myOncick() { but1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Observable<String> observable = getObservable(); // Observer<String> observer = getObserver(); // observable.subscribe(observer);//保定 observable.subscribe(new Consumer<String>() { @Override public void accept(String s) throws Exception { tv1.setText(s); } }); } }); } private void initView() { but1 = (Button) findViewById(R.id.but1); tv1 = (TextView) findViewById(R.id.tv1); } public Observable<String> getObservable() { // /* // 对观察者进行创建 // */ // return Observable.create(new ObservableOnSubscribe<String>() { // /* // 事件发射器 // */ // @Override // public void subscribe(ObservableEmitter<String> e) throws Exception { // e.onNext("大保健");//发送事件 // e.onNext("大保健"); // e.onNext("大保健"); // e.onComplete();//提交发射 // } // }); //第二中创建方法 // Observable observable = Observable.just("打包SOD米"); // Observable observable = Observable.fromArray("打包SOD米","打包SOD米","打包SOD米","打包SOD米"); // return observable; return Observable.fromCallable(new Callable<String>() { @Override public String call() throws Exception { return "呵呵"; } }); } /* 被观察者 */ public Observer<String> getObserver() { return new Observer<String>() { @Override public void onSubscribe(Disposable d) { /* 这里对订阅关系进行处理 比如 解除关系 和判断有没有关系 */ Log.d("MainActvity", "onSubscribe"); } @Override public void onNext(String value) { Log.d("MainActvity", "onNext"); } @Override public void onError(Throwable e) { Log.d("MainActvity", "onError"); } @Override public void onComplete() { Log.d("MainActvity", "onComplete"); } }; } }
package com.example.administrator.rxjva20; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; import io.reactivex.Observer; import io.reactivex.Scheduler; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class Main2Activity extends AppCompatActivity { private Button but1; private TextView tv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); initView(); myOncick(); } private void myOncick() { but1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Observable.create(new ObservableOnSubscribe<User>() { @Override public void subscribe(ObservableEmitter<User> e) throws Exception { User user = new User(1,"小黄", 12, "男"); e.onNext(user);//发射 } }).subscribeOn(Schedulers.io())// 调度表:通过这个方法可以在子线程里调用 //如果不加默认是在主线程中 .observeOn(AndroidSchedulers.mainThread())//观察:切换安卓主线程 两个不要再同一个线程 异步处理完之后 自动跳转安卓主线程 .subscribe(new Observer<User>() {//接受 @Override public void onSubscribe(Disposable d) { } @Override public void onNext(User value) { Log.d("xxxx", value.getName()); tv1.setText(value.getName()); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } }); } private void initView() { but1 = (Button) findViewById(R.id.but1); tv1 = (TextView) findViewById(R.id.tv1); } }
package com.example.administrator.rxjva20; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.functions.Consumer; import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; public class Main3Activity extends AppCompatActivity { private Button but1; private TextView tv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); initView(); myOncick(); } private void myOncick() { but1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//在这里或的登陆ID Observable.just(getUser()).flatMap(new Function<User, ObservableSource<?>>() { @Override public ObservableSource<?> apply(User user) throws Exception { User user1 = user; return Observable.just(user1); } }).flatMap(new Function<Object, ObservableSource<User>>() {//获取登录信息 @Override public ObservableSource<User> apply(Object o) throws Exception { User user1= (User) o; return Observable.just(user1); } }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<User>() {//发射 @Override public void accept(User user) throws Exception { tv1.setText(user.getName()); } }); } }); } private void initView() { but1 = (Button) findViewById(R.id.but1); tv1 = (TextView) findViewById(R.id.tv1); } private User getUser() { User user=new User(12,"kkkkk",22,"男"); return user; } }
Rx
最新推荐文章于 2023-12-08 15:28:01 发布