技术标签: RxJava
终于到了这个时刻,Android中的定律,主线程不做耗时操作,子线程不更新ui。
这次也是根据给初学者的RxJava2.0教程(二)进入下面的学习。
直接上代码
private TextView mTextView;
public RxJavaThread(TextView textView) {
mTextView = textView;
}
public void rxJavaThreadDispatch() {
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("I want do in sub thread");
}
});
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String string) {
Log.i(TAG, "onNext: ");
if (mTextView != null) {
mTextView.setText(string);
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
//订阅的时候指定观察者和和可观察者所在的线程
observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
重点在指挥官和执行者建立连接的地方。
通过subscribeOn指定订阅的时候在子线程订阅,通过observerOn观察的时候在主线程观察。
运行的结果的时候,加上打印线程的名字
05-03 07:36:32.097 3378-3395/? I/RxJavaThread: subscribe: RxNewThreadScheduler-1
05-03 07:36:32.123 3378-3378/? I/RxJavaThread: onNext:
05-03 07:36:32.123 3378-3378/? I/RxJavaThread: onNext: main
可以看到,onNext在主线程中执行了,而发射的时候在子线程中执行的。
引用一下他说的话,可以参考在第一行找到原文地址查看。
多次指定上游的线程只有第一次指定的有效, 也就是说多次调用subscribeOn()
只有第一次的有效, 其余的会被忽略.
多次指定下游的线程是可以的, 也就是说每调用一次observeOn()
, 下游的线程就会切换一次.
1.如果命题p为真、命题q为假,则下述哪个复合命题为真命题(B) A.p且q B.如果q则p C.非p D.如果p则q 2.p和q均是原子命题,“如果p那么q”是由p和q组合得到的复合命题。下面对“如果p那么q”这一复合命题描述不正确的是( A) A.无法用真值表来判断“如果p那么q”的真假 B....
css选择器标签选择器:针对一类标签(如:body,div,p,ul,li)ID选择器:针对某一个特定的标签使用(如:id=“demo”)类选择器:针对你想要的所有标签使用(如:class=“demo”)通用选择器(通配符):针对所有的标签都适用(如:*号)后代选择器(继承选择器):用空格隔开(如:div p,注意两选择器用空格键分开)交集选择器(组合选择器):(如:.head .head_logo,注意两选择器用空格键分开)。并集选择器:(群组选择器):用逗号隔开伪类选择器:(如:就是链
这两天在做项目的 时候遇到了这个问题,发现网上也有人提出了这个问题,但是根本没有人去解决,可能是问题太简单了。我在这里贴上我的代码,以往对大家有帮助。首先,实现的效果,希望是这样的。网上也给出了一些解决方案,但是根本没有实现动态的下拉呀。(下面贴出网上解决方案的截图)接下来再来描述一下问题。我要实现的是listview的headerview 一开
本文出处:https://www.cnblogs.com/goodhacker/p/3355660.html#undefined python的标准库里的日志系统从Python2.3开始支持。只要import logging这个模块即可使用。如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用: 1 import logging 2 ...
<template> <div class="time"> <span>{{nowTime}}&nbsp</span> <span>{{nowWeek}}</span> </div></template><script>export default { data () { return { nowTime: '',
本文主要向大家介绍了Linux运维知识之win10下Linux子系统开启ssh服务,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。虽然win10自带的bash功能已经很丰富,操作也简便,不过习惯了用xshell, 还是选择用xshell来操作直接用xshell连接127.0.0.1 端口22 提示连接失败。说明应该是ubuntu的sshd服务设置有问题:解决方案如下:安装ss...
先看例子,后面有对用到的知识点的总结效果图:实现代码如下:组件练习组件1菜单2//注册组件let list1 = ["北京","上海","深圳","郑州","南阳"];let list2 = ["胡歌","陈默","陶亚东","刘同"];Vue.component("custom-select",{data:function(){return {selectShow:false,val:""}},...
人工智能、机器学习泛滥。以前搜不出来,现在搜出来的太多。找自己想看的都得费半天劲。这当然是好的,有资料总比没有强。但是搞这个方向,适合自己的才是好材料。太简单,你觉得不过瘾,太深奥,你看不懂,所以文章,刚好讲到你的困惑点,对你来说才是好文章。我自己觉得,反向传播方法,UFLDL里的讲解比较适合我,通篇没有废话,简单直接,写的非常好,所以Mark一下,免得下次忘了UFLDL这个关键词,又费半...
游标中的更新和删除 在PL/SQL中依然可以使用UPDATE和DELETE语句更新或删除数据行。显式游标只有在需要获得多行数据的情况下使用。PL/SQL提供了仅仅使用游标就可以执行删除或更新记录的方法。 UPDATE或DELETE语句中的WHERE CURRENT OF子串专门处理要执行UPDATE或DELETE操作的表中取出的最近的数据。要使用这个方法,在声明游标时必须使用FOR
最简单的方法是用pgrep 获取进程号,然后kill掉
packagecom.get.one;importjavax.mail.BodyPart;importjavax.mail.Message;importjavax.mail.Multipart;importjavax.mail.Session;importjavax.mail.Transport;import javax.mail.internet.*;import java.util.*;imp...
客户端代码,有问题欢迎指出,新手package com.qc.exp.common.util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.http.HttpEntity;import org.springframework.http.HttpHeaders;impo...