TouTiao开源项目 分析笔记5

1.深入理解RxJava

1.1.基本上现在的APP都会有请求网络,然后处理回调的业务吧。

  如果请求的数据很多,业务越来越复杂,怎么处理呢?

  这里我用到了RxJava来帮我处理业务。

  RxJava主要复杂事件的通知和订阅。这个挺起来没有什么概念。

  其实说白了,RxJava就是优雅地处理函数回调。

1.2.推荐参考文章:我们为什么要用rxjava?

  这篇文章以一个案例的方式,详细解释了rxjava的功能。

  下面我来深入分析一下。

1.3.以通常思维模式来处理这个案例。

  

  这个比较好理解,但是这种方式不是异步请求。现在网络请求基本都要异步线程调用。

1.4.那么修改一下实现方式。

  

1.5.有匿名类,然后消除

  

  这里将Callback<T>封装起来为一个Task<T>任务了。

1.6.处理逻辑层

  

1.7.定义一个抽象类AbstractTask<T> 来实现Task<T>

  

1.8.最终业务层

  

2.一些示例文字

第二段

3.一些示例文字

第三段

4.一些示例文字

第四段

5.一些示例文字

第五段

6.一些示例文字

第六段

时间: 2024-11-10 16:58:33

TouTiao开源项目 分析笔记5的相关文章

TouTiao开源项目 分析笔记12 从总体到局部 构建视频主页面

1.构建视频主列表的整体碎片VideoTabLayout 1.1.首先创建一个VideoTabLayout package com.jasonjan.headnews.module.video; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.app.Frag

TouTiao开源项目 分析笔记9 实现一个问答主页面

1.根据API返回创建几个基础的Bean 1.1.WendaArticleDataBean类 API返回的数据如下: /** * cell_type : 36 * extra : {"wenda_video":[],"show_answer":false,"video_large_card":false,"label_style":{"color_type":0,"name":"

TouTiao开源项目 分析笔记3

1.搭建NewsTabLayout片段 1.1.加载布局 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_news_tab, container, false); initV

TouTiao开源项目 分析笔记4

1.一些示例文字 第一段 2.一些示例文字 第二段 3.一些示例文字 第三段 4.一些示例文字 第四段 5.一些示例文字 第五段 6.一些示例文字 第六段

TouTiao开源项目 分析笔记7

1.一些示例文字 第一段 2.一些示例文字 第二段 3.一些示例文字 第三段 4.一些示例文字 第四段 5.一些示例文字 第五段 6.一些示例文字 第六段

TouTiao开源项目 分析笔记19 问答内容

1.真实页面预览 1.1.成果预览 首先是问答列表 然后每个item设置点击事件,进入问答内容列表 然后每一个问答内容也设置点击事件,进入问答详情 1.2.触发事件. 在WendaArticleOneImgViewBinder中,设置item的点击事件, 跳转到WendaContentActivity. 在WendaArticleTextViewBinder中,设置item的点击事件, 跳转到WendaContentActivity. 在WendaArticleThreeImgViewBinde

今日头条开源项目 分析笔记1

1.InitApp==>项目的入口Application 1.1.继承了MultiDexApplication 超过65K方法的APP,会遇到65535的错误.原因就是为了支持比较大型的APP而产生. 参考文章:Android分包MultiDex原理详解. 1.2.在build.gradle中修改multiDexEnabled 然后记得在dependencies中加: implementation 'com.android.support:multidex:1.0.2' 1.3.用第三方库fac

树莓派开源项目开发笔记

2.led 没啥新的东西 就是GPIO操作 3.key 可以设置中断方式的来实现GPIO操作 wiringPiISR(gpio_num, rise/fall_edge, isr_server_addr) 4. gpio load i2c时候出现问题 gpio: Unable to load/unload modules as this Pi has the device tree enabled. You need to run the raspi-config program (as root

100offer举办的「寻找实干和坚持的技术力量」开源项目投票排名分析程序

由于100offer举办的「寻找实干和坚持的技术力量」开源项目投票活动没有按照票数排序的功能,所以本文写了个小程序来实现这个功能,代码如下: import org.jsoup.Jsoup; import org.jsoup.nodes.Element; import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; /**