ImageVerifierCode 换一换
格式:PPTX , 页数:39 ,大小:2.84MB ,
资源ID:5731710      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5731710.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(当Android遇上RxJava-By-宇行信.pptx)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

当Android遇上RxJava-By-宇行信.pptx

1、当Android遇上RxJavaBy 宇行信(yuxingxin)2016.1.10RxJava+Android1.介绍ReactiveX、RxJava2.常见Android开发中遇到的使用场景3.关于RxJava与Android的学习ReactiveX1.扩展的观察者模式通过订阅可观测对象的序列流然后做出反应。2.迭代器模式对对象序列进行迭代输出从而使订阅者可以依次对其处理。3.函数式编程思想简化问题的解决的步骤,让你的代码更优雅和简洁ReactiveX已经实现的语言版本和平台版本为什么说是扩展的观察者模式GoF中的观察者模式:被观察者发出事件,然后观察者(事件源)订阅然后进行处理。扩展:如

2、果没有观察者,被观察者是不会发出任何事件的。另外知道事件何时结束,还有错误通知处理迭代器模式提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示RxJava Essentials一书做的的对比:迭代器模式在事件处理上采用的是“同步/拉式”的方式,而被观察者采用的是“异步/推式”的方式,而对观察者而言,显然后者更灵活。函数式编程来自给Android开发者的RxJava详解的代码:对比一下是不是下面更简洁与优雅?RxJava1.RxJava的核心2.RxJava操作符3.RxJava扩展RxJava核心Observable(被观察者,也就是事件源)和Subscriber(观察者

3、)写成匿名函数:用Java 8 lambdas(Retrolambda)表达式ObservableOnSubscribeObserverSubscriptionSubscriber容易混淆的类/接口宝石图http:/ strings=张张三三,李四李四,王五王五,赵赵六六;Observable.from(strings).subscribe(new Action1()Override public void call(String s)Log.i(name,s););RxJava操作符变换操作:Map、FlatMap、ConcatMap等public void showUserName(Str

4、ing userName)textView.setText(userName);public void showUserName(String userName)Observable.just(userName).subscribe(new Action1()Override public void call(String s)textView.setText(s););如果需要在显示前对这个字符串做处理,然后再展示,比如加“张三,你好”方法1:我们可以对字符串本身操作方法2:我们可以放到Action1.call()方法里做处理方法3:使用操作符做变换:mappublic void showU

5、serName(String userName)Observable.just(userName).map(new Func1()public String call(String text)return handleUserName(text);).subscribe(new Action1()public void call(String s)textView.setText(s););flatMap()打印出中国的所有省份名称。List provinceList=Observable.from(provinceList).map(new Func1()Override public St

6、ring call(Province province)return province.getName();).subscribe(new Action1()Override public void call(String s)Log.i(“省份名称省份名称”,s);flatMap()打印出中国每个省份的所有城市List provinceList=Observable.from(provinceList).subscribe(new Action1()Override public void call(Province province)List cities=province.getCiti

7、es();for(int i=0;i cities.size();i+)City city=cities.get(i);Log.i(“城市城市”,city.getName(););List provinceList=Observable.from(provinceList).flatMap(new Func1Province,Observable()Overridepublic Observable call(Province province)return Observable.from(province.getCities();).subscribe(new Action1()Overri

8、de public void call(City city)Log.i(“城市城市”,city.getName(););flatMap()flatMap()扩展回调地狱restAdapter.getApiService().getToken(new Callback()Override public void success(String token)restAdapter.getApiService().getUserInfo(token,new Callback()Override public void success(UserInfo userInfo)showMessage(user

9、Info.getUser);Override public void failure(RetrofitError error)/处处理理错误错误 .);Override public void failure(RetrofitError error)/Error handling .);解决回调地狱restAdapter.getApiService().getToken().flatMap(new Func1String,Observable()Override public Observable call(String token)return restAdapter.getApiServi

10、ce().getUserInfo(token);).subscribe(new Action1()Override public void call(UserInfo userInfo)showMessage(userInfo.getUser);)异步调度器Scheduler:Schedulers.immediate()Schedulers.newThread()Schedulers.io()Sputation()AndroidSchedulers.mainThread()操作符:subscribeOn():指定 subscribe()所发生的线程observeOn():指定 Subscrib

11、er 所运行在的线程Schedulers.trampoline()修改之前的例子restAdapter.getApiService().getToken().flatMap(new Func1String,Observable()Override public Observable call(String token)return restAdapter.getApiService().getUserInfo(token);).subscribeOn(Schedulers.io()/指定指定 subscribe()发发生在生在 IO 线线程程.observeOn(AndroidSchedule

12、rs.mainThread()/指定指定 Subscriber 的的回回调发调发生在主生在主线线程程.subscribe(new Action1()Override public void call(UserInfo userInfo)showMessage(userInfo.getUser);)操作符复用 Observable applySchedulers(Observable observable)return observable.subscribeOn(Schedulers.io().observeOn(AndroidSchedulers.mainThread();applySche

13、dulers(restAdapter.getApiService().getToken().flatMap(new Func1String,Observable()Override public Observable call(String token)return restAdapter.getApiService().getUserInfo(token);).subscribe(new Action1()Override public void call(UserInfo userInfo)showMessage(userInfo.getUser);)转换器与Compose()Transf

14、ormer:Func1Observable,Observable Transformer applySchedulers()return new Transformer()Override public Observable call(Observable observable)return observable.subscribeOn(Schedulers.io().observeOn(AndroidSchedulers.mainThread();restAdapter.getApiService().getToken().flatMap(new Func1String,Observable

15、)Override public Observable call(String token)return restAdapter.getApiService().getUserInfo(token);).compose(applySchedulers().subscribe(new Action1()Override public void call(UserInfo userInfo)showMessage(userInfo.getUser);)Compose()操作符其他操作符过滤操作:Debounce,Distinct,ElementAt,Filter,First,Last,Sampl

16、e,Skip,SkipLast,Take,TakeLast等Debounce:“去抖”,只有在空闲了一段时间后才发射数据,过滤掉发射速率过快的数据项Sample:“采样”,定期发射Observable最近发射的数据项自定义操作符总结将一个为数字的字符串数组元素转换为数字过滤掉大于10的数字去重取最后面3个元素累计求和Observable .from(numbers).map(s-Integer.parseInt(s).filter(s-s number1+number2).subscribe(i-System.out.println(i);/16String numbers=11,2,2,13

17、4,5,7扩展1.Rxbinding:用RxJava实现onClick,TextWatcher,check等事件绑定2.RxBus:用RxJava实现EventBus或者Otto3.RxPreferences:用RxJava实现Android中的SharedPreferences4.RxLifecycle:用来严格控制由于发布了一个订阅后,由于没有及时取消,导致Activity/Fragment无法销毁导致的内存泄露。5.ReactiveNetwork:使用RxJava来监听网络连接状态和wifi信号强度变化6.RxPermissions:针对 Android 6.0 权限管理进行一个 Rx

18、 封装的一个类库7.rxloader:用RxJava对loader的一个封装还有更多Android应用场景1.避免嵌套回调地狱问题2.使用debounce减少频繁的网络请求。避免每输入(删除)一个字就做一次联想3.使用combineLatest合并最近N个结点,注册的时候所有输入信息(邮箱、密码、电话号码等)合法才点亮注册按钮。4.使用merge合并两个数据源,最后做统一处理5.使用concat和first做缓存,依次检查memory、disk和network中是否存在数据,任何一步一旦发现数据后面的操作都不执行。6.使用timer做定时操作7.使用interval做周期性操作8.使用thro

19、ttleFirst防止按钮重复点击9.做响应式的界面更多RxTextView.textChanges(searchEditText).debounce(150,MILLISECONDS).switchMap(Api:searchItems).subscribe(this:updateList,t-showError();Observable.merge(getNews(),getHotNews(),new Func2Response,MyResponse,Boolean()Override public Boolean call(Response response,Response respo

20、nse2)mData.clear();mData.addAll(response);mData.addAll(response2.msg);return true;).subscribeOn(Schedulers.io().observeOn(AndroidSchedulers.mainThread().subscribe(new Subscriber()Override public void onCompleted()Override public void onError(Throwable e)Override public void onNext(Boolean o)mAdapter

21、notifyDataSetChanged(););RxView.clicks(button).throttleFirst(1,TimeUnit.SECONDS).subscribe(new Observer()Override public void onCompleted()log.d(completed);Override public void onError(Throwable e)log.e(error);Override public void onNext(Object o)log.d(button clicked););SharedPreferences preference

22、s=PreferenceManager.getDefaultSharedPreferences(this);RxSharedPreferences rxPreferences=RxSharedPreferences.create(preferences);Preference checked=rxPreferences.getBoolean(checked,true);CheckBox checkBox=(CheckBox)findViewById(R.id.cb_test);RxCompoundButton.checkedChanges(checkBox).subscribe(checked

23、asAction();Observable memory=Observable.create(new Observable.OnSubscribe()Override public void call(Subscriber subscriber)if(memoryCache!=null)subscriber.onNext(memoryCache);else subscriber.onCompleted(););Observable disk=Observable.create(new Observable.OnSubscribe()Override public void call(Subs

24、criber subscriber)String cachePref=rxPreferences.getString(cache).get();if(!TextUtils.isEmpty(cachePref)subscriber.onNext(cachePref);else subscriber.onCompleted(););Observable network=Observable.just(network);/依次检查memory、disk、network Observable.concat(memory,disk,network).first().subscribeOn(Schedulers.newThread().subscribe(s-memoryCache=memory;System.out.println(-subscribe:+s););参考http:/gank.io/post/560e15be2dca930e00da1083http:/ Essentialshttp:/reactivex.io关于微博:宇行信移动开发在线分享站:http:/知乎:yuxingxinThanks

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服