Rxandroid中map等操作,如何切换线程
来源:互联网 发布:四柱预测软件 编辑:程序博客网 时间:2024/06/16 04:09
public class MainActivity extends AppCompatActivity { Button btn; TextView txt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); txt = (TextView) findViewById(R.id.txt); txt.setVisibility(View.GONE); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { test(); } }); } private String name0 = null; private String name1 = null; private String nameMap = null; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { Toast.makeText(getApplicationContext(), name0, Toast.LENGTH_SHORT).show(); } else if (msg.what == 1) { Toast.makeText(getApplicationContext(), name1, Toast.LENGTH_SHORT).show(); } else if (msg.what == 2) { Toast.makeText(getApplicationContext(), nameMap, Toast.LENGTH_SHORT).show(); } } }; /** */ private void test() { Observable.create(new Observable.OnSubscribe<Integer>() { @Override public void call(Subscriber<? super Integer> subscriber) { subscriber.onNext(2323); name0 = "name0:" + Thread.currentThread().getName(); handler.sendEmptyMessage(0); } }).subscribeOn(Schedulers.io()) .observeOn(Schedulers.io()) // 这里会影响到subscribe()所在的线程 .map(new Func1<Integer, String>() { @Override public String call(Integer integer) { nameMap = "nameMap:" + Thread.currentThread().getName(); // 子线程 handler.sendEmptyMessage(2); return null; } }) .subscribe(new Action1<String>() { @Override public void call(String string) { name1 = "name1:" + Thread.currentThread().getName(); // 子线程 handler.sendEmptyMessage(1); } }); }}
注意:observeOn()指定的是它之后的操作所在的线程。如果由多次切换线程的需求,只要在每个想要切换线程的位置调用一次observeOn()即可。
private void test() { Observable.create(new Observable.OnSubscribe<Integer>() { @Override public void call(Subscriber<? super Integer> subscriber) { subscriber.onNext(2323); name0 = "name0:" + Thread.currentThread().getName(); handler.sendEmptyMessage(0); } }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .map(new Func1<Integer, String>() { // 主线程 @Override public String call(Integer integer) { nameMap = "nameMap:" + Thread.currentThread().getName(); handler.sendEmptyMessage(2); return null; } }) .subscribe(new Action1<String>() { // 主线程 @Override public void call(String string) { name1 = "name1:" + Thread.currentThread().getName(); handler.sendEmptyMessage(1); } }); }
0 0
- Rxandroid中map等操作,如何切换线程
- Rxandroid中doOnSubscribe(),如何指定其运行的线程?
- 浅析RxJava和RxAndroid关于线程切换和操作符作用
- RxJava(RxAndroid)线程切换机制
- 初涉RxAndroid .from() .just() 以及线程操作
- RxAndroid 主/子线程切换配合的三种方式
- RxAndroid map源码解析
- spring 配置文件中如何注入map list set等类型
- Rxandroid中doOnSubscribe()执行默认情况下所在的线程
- C#的线程中如何操作控件?
- 关于线程中显示toast等操作问题
- 如何在MVP模式中控制RxAndroid的生命周期?
- 如何去理解Linux中进程,线程等概念
- 初涉RxAndroid .map() . filter() flatMap()
- C++中map操作
- Android中进程与线程及如何在子线程中操作UI线程
- Android中进程与线程及如何在子线程中操作UI线程
- Android中进程与线程及如何在子线程中操作UI线程
- Java Web 从入门到精通(明日科技)
- SpringMVC添加spring-security静态资源加载问题
- 链表的快排和归并排序
- Java基础要点总结
- python数据分析之numpy初始化(一)
- Rxandroid中map等操作,如何切换线程
- 一个ns-3的Gnuplot例子
- 除Hadoop大数据技术外,还需了解的九大技术
- RS232接口的可靠传输方法
- C#和Java中的i=i++问题分析与备忘
- HashMap的四种循环遍历方式
- osg坐标系转换
- [2016校赛]两个简单的小题
- xcode 中#pragma得使用