RxJava1.6訂閱和取消訂閱

/**
 * @author ChenYe
 *         implementation 'io.reactivex:rxjava:1.1.6'
 *         implementation 'io.reactivex:rxandroid:1.2.1'
 *         RxJava的觀察者和被觀察者,當觀察者的代碼塊完全走完之後(請看清楚,我說的完全,不是說執行一次之後),
 *         就會自動取消訂閱,然後觀察者的一個方法subscriber.isUnsubscribed(),返回true代表已經取消訂閱了,
 *         返回false代表還在訂閱中,而這個時候執行 subscriber.unsubscribe();就可以取消訂閱
 */
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "cy==MainActivity";
    private Observable<String> observable;
    private Subscriber<String> subscriber;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        observable = Observable.interval(10, TimeUnit.SECONDS)
                .map(new Func1<Long, String>() {
                    @Override
                    public String call(Long aLong) {
                        return "這是測試數據";
                    }
                });
        subscriber = Subscribers.create(new Action1<String>() {
            @Override
            public void call(String s) {
                Log.e(TAG, s);
            }
        });

    }


    public void subAndExecute(View view) {
        observable.subscribe(subscriber);
    }

    public void cancelSub(View view) {

        if (!subscriber.isUnsubscribed()) {
            subscriber.unsubscribe();
        }
    }

    public void judge(View view) {
        //指示此訂閱者是否已從其訂閱列表取消訂閱。
        if (subscriber.isUnsubscribed()) {
            Log.e(TAG, "已經取消了訂閱");
        } else {
            Log.e(TAG, "還沒有取消訂閱");
        }
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章