亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Rx_Android 的簡單實用方法(參考老羅代碼)

標簽:
Android

Rx是响应式编程的意思, 本质是观察者模式, 是以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式. 在Android编程时, 经常会使用后台线程, 那么就可以使用这种方式. 目前的异步编程方式都会导致一些问题, 如

(1) Asynctasks can easily lead to memory leaks

(2) CursorLoaders with a ContentProvider require a large amount of configuration and boilerplate code to setup.

(3) Services are intended for longer running background tasks and not fast-finishing operations, such as making a network call or loading content from a database.

RxAndroid来源于RxJava, 在RxJava的基础上扩展了一些Android的功能 来处理异步的任务处理,它可以使代码更加优雅,代码的可维护性更强。

下面简单介绍Rx_Android的几种实用方法

1.create方式(1)建立

/**
 * 使用create方式
 */
public static void createObserable(){
    Observable<String>observable=Observable.create(new Observable.OnSubscribe<String>(){

        @Override
        public void call(Subscriber<? super String> subscriber) {
             if(!subscriber.isUnsubscribed()){
                 subscriber.onNext("hello");
                 subscriber.onNext("world");
                 subscriber.onNext(downloadJson());
                 subscriber.onCompleted();
             }
        }
    });

    Subscriber<String>showsub=new Subscriber<String>() {
        @Override
        public void onCompleted() {
            Log.e(TAG,"onCompleted");
        }

        @Override
        public void onError(Throwable e) {
            Log.e(TAG,e.getMessage());
        }

        @Override
        public void onNext(String s) {
            Log.e(TAG,"result->>"+s);
        }
    };
    //关联被观察者
    observable.subscribe(showsub);
}
/**
 * 调用下载方法
 * @return
 */
public static String downloadJson(){
    return "json success!";
}

cretae 方式(2)建立

/**
 * create的第2中方法
 */
public static void createPrint(){
    Observable.create(new Observable.OnSubscribe<Integer>() {
        @Override
        public void call(Subscriber<? super Integer> subscriber) {
            if(!subscriber.isUnsubscribed()){
                for(int i=0;i<10;i++){
                    subscriber.onNext(i);
                }
                subscriber.onCompleted();
            }
        }
    }).subscribe(new Subscriber<Integer>() {
        @Override
        public void onCompleted() {
            Log.i(TAG,"onCompleted");
        }

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

        @Override
        public void onNext(Integer integer) {
            Log.i(TAG,"result-->>"+integer);
        }
    });
}



原文链接:http://www.apkbus.com/blog-813041-62859.html

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消