有数据要处理的时候如何使用rxJava进行异步处理数据
我需要实现下面这段代码,但是应该是耗时太长放在主界面会卡,所以希望异步处理
JsonReader jsonReader = new JsonReader();
cityObject = jsonReader.jsonObject();
try {
cityArray = cityObject.getJSONArray("city_info");
for (int i=0;i
Gson gson = new Gson();
JSONObject city = (JSONObject) cityArray.get(i);
cityDataList.add(gson.fromJson(city.toString(), CityData.class));
}
} catch (JSONException e) {
e.printStackTrace();
}
provinceList = getProvinceList();
cityMap = getCityMap();
public class JsonReader {
public JSONObject jsonObject(){
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("assets/cityList.json");
InputStreamReader streamReader = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(streamReader);
String line;
StringBuilder stringBuilder = new StringBuilder();
try {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
reader.close();
reader.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
JSONObject cityJson = new JSONObject(stringBuilder.toString());
return cityJson;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}
private List getProvinceList() {
List list = new ArrayList<>();
for (int i = 0; i < cityDataList.size(); i++) {
CityData cityData = cityDataList.get(i);
boolean isProvince = false;
for (int j = 0; j < list.size(); j++) {
if (list.get(j).equals(cityData.getProv())) {
isProvince = true;
break;
}
}
if (isProvince) continue;
else list.add(cityData.getProv());
}
return list;
}
private HashMap> getCityMap() {
HashMap> map = new HashMap<>();
for (int i = 0; i < provinceList.size(); i++) {
String prov = provinceList.get(i);
List list = new ArrayList<>();
for (int j = 0; j < cityDataList.size(); j++) {
if (cityDataList.get(j).getProv().equals(prov))
list.add(cityDataList.get(j).getCity());
}
map.put(prov, list);
}
return map;
}
这几个操作循环比较多,比较耗时,我想用rxjava处理,但是对observable的使用还是不太清楚,有人能介绍一下像我这样observable怎么写吗?
我想要改进的是用observable通过flatmap等这些操作符来返回provinceList和cityMap,并且把线程转到后台,在前台接收到这两个数据就好了
相关阅读:
Node.js 接受到的json解析的格式错误?
如何知道PHP自带函数底层都做了什么
html to docx 相关问题
计算器程序完善修改优化
针对volatile的解决方法?
crontab curl 不执行的问题
Spring报错:No bean named 'sessionFactory' is defined怎么解决?
如何设置让eclipse在启动tomcat的时候自动弹出web项目的主页,每次都要手动打开浏览器很麻烦
router.getAll未定义的不是一个函数?
js文件加载慢,html页面展现了但是不能操作该怎么解决
nodejs tty.js 如何通过js实现自动执行命令?
sublime text3运行python控制台乱码
很简单的一个前端重构问题,关于background-color,overflow,margin,padding
import 'amaze' 出现 error Extra semicolon semi
同一个上下文,怎样动态执行函数?
如何让图片自适应容器的宽度和高度
OS UIWEBVIEW 获取mpmovieplayercontroller状态
Objective-C 中如何为一个方法添加超时重试的特性?
flask如何集成支付宝支付
验证fullpage.js组件切换时出现的问题