Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >线程工作有问题

线程工作有问题
EN

Stack Overflow用户
提问于 2018-02-25 02:20:48
回答 1查看 147关注 0票数 0

我的事件发送类有代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 private val socketListeners: ArrayList<SocketContentListener> = ArrayList()

  //add listener here
 override fun subscribe(socketListener: SocketContentListener) {
        socketListeners.add(socketListener)
    }

       private fun getSocketConnectListener()
                : SocketContentListener {
            /**
             * Post received messages to listeners via Handler
             * because handler helps to set all messages in order on main thread.
             */
            return object : SocketContentListener {

                override fun onUdpServerListenerCreated(inetAddress: InetAddress?, port: Int) {
                    val subscribers = ArrayList<SocketContentListener>(socketListeners)
                    for (listener in subscribers) {
                        Handler(Looper.getMainLooper()).post({ listener.onUdpServerListenerCreated(inetAddress, port) })
                    }
            }
        }

我试着观察到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val udpObservable = Observable.create<Int> { emitter ->
        val listener = object : SocketListener() {
            override fun onUdpServerListenerCreated(inetAddress: InetAddress, port: Int) {
                emitter.onNext(port)
                emitter.onComplete()
            }

        }
        //add listener here
        socketSource.subscribe(listener)
        emitter.setCancellable { socketSource.unSubscribe(listener) }
    }.subscribeOn(Schedulers.io())
            .doOnNext { Log.d("123-thread", "current is: " + Thread.currentThread().name) }
            .onErrorReturn { throw ConnectionException(it) }
            .subscribe()

但是在测试期间,我看到的不是预期的RxCachedThreadScheduler-1 thread工作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  D/123-thread: current is:-> main

你能帮我吗?请。我的错误在哪里?如何为rx链实现所需的RxCachedThreadScheduler线程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-25 07:51:04

用于创建可观察性的代码将在调度程序上执行,任何地方都不存在隐式上下文更改。

使您的事件从主线程上的侦听器到达。然后将它们发送到同一个线程上的发射器。

因此,订阅使用调度器io Thread,而发送程序则使用Main Thread

因此,解决方案是在可观察的创建之后添加observerOn(Schedulers.newThread())Like this

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val udpObservable = Observable.create<Int> { emitter ->
        val listener = object : SocketListener() {
            override fun onUdpServerListenerCreated(inetAddress: InetAddress, port: Int) {
                emitter.onNext(port)
                emitter.onComplete()
            }

        }
        //add listener here
        socketSource.subscribe(listener)
        emitter.setCancellable { socketSource.unSubscribe(listener) }
    }.subscribeOn(Schedulers.io())

      //need add this for work with emmit data on background 
     .observerOn(Schedulers.newThread())
            .doOnNext { Log.d("123-thread", "current is: " + Thread.currentThread().name) }
            .onErrorReturn { throw ConnectionException(it) }
            .subscribe()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48972417

复制
相关文章
屏幕坐标与客户坐标的区别
屏幕坐标是相对于屏幕左上角(0,0)位置的坐标,客户坐标是相对于某个窗口客户区左上角的坐标,当谈到客户坐标时需要说明是相对哪个窗口的客户坐标。
gaigai
2019/09/29
2.2K0
屏幕坐标与客户坐标的区别
Unity ugui屏幕适配与世界坐标到ugui屏幕坐标的转换
我们知道,如今的移动端设备分辨率五花八门,而开发过程中往往只取一种分辨率作为设计参考,例如采用1920*1080分辨率作为参考分辨率。
汐夜koshio
2020/03/19
2.9K0
【Android 屏幕适配】屏幕适配基础概念 ② ( 像素 px 与 密度无关像素 dip | 像素 px 与 密度无关像素 dip 在不同屏幕像素密度 dpi 下的换算关系 )
dip 是 Desity Independent Pixels 的缩写 , 表示 密度无关像素 , dip 又可以缩写成 dp ;
韩曙亮
2023/03/30
2K0
VC如何获取对话框中控件的坐标
VC如何获取对话框中控件的坐标 GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,它的top和left都为0,right和botton是宽和高,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。   ClientToScreen把客户区坐标系下的RECT坐标转换为屏
_gongluck
2018/03/08
2.6K0
屏幕坐标系和常用UI坐标系的转换
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bering
2019/12/02
2.3K0
球心坐标与本地坐标
1球心坐标(ECEF)与本地坐标(NEU) 假如你来到一个陌生城市,你很可能需要问路、通常会告诉你向北走100米,右转,向东走100米,理解起来很直观。你给儿子买了一个地球仪,你从北京(39,115)转到伦敦 (51,0),这个动作就可以分解为两步:先转到同一个经度(39,0),在转到同一个维度(51,0) 这个例子体现了一个问题:不同的地理范围下会使用更适合的坐标系。比如前者是局部的平面坐标,而后者是球面坐标。因此,同一个点相对不同的原点,具有不同的相对位置:既是地球上的一个经纬度,又是“出门右转富士康
Peter Lu
2018/06/20
2.3K0
【Android 应用开发】Android 组件 位置坐标 属性 ( 组件位置属性 | 父容器坐标系坐标 | 窗口坐标系坐标 | 屏幕坐标系坐标 | 触摸坐标 )
left , top , right , bottom 是组件相对于父容器的位置 , 该值一般不会改变 ;
韩曙亮
2023/03/27
4K0
坐标系与矩阵(4):球心坐标与NEU坐标系
前三篇介绍了坐标系和矩阵的数学知识,从本篇开始,我们试图运用这些知识来解决实际问题。
Peter Lu
2021/07/20
3.4K0
坐标系与矩阵(4):球心坐标与NEU坐标系
【Unity3D】实现屏幕坐标和3维空间坐标的转化
[这里写图片描述] Input.mousePosition就是鼠标所在的位置的坐标 函数Camera.main.ScreenToWorldPoint就是屏幕坐标转化三维空间的函数 Camera.main.ScreenToWorldPoint [这里写图片描述] 把脚本挂载在主摄像机上 运行 [这里写图片描述] 就得到屏幕坐标映射在三维世界中的坐标了 不过有一点是,转化之后z轴是-10 这个时候只要z轴+10就是屏幕映射到三维世界的正确坐标了 Vector3 mousePos = Camera.main.Sc
恬静的小魔龙
2020/03/10
1.7K0
Threejs入门之二十二:Threejs中的屏幕坐标转标准设备坐标
在上一节中,我们在监听鼠标移动事件时,将其坐标范围处理为了[-1,1]的范围,使用如下代码
九仞山
2023/04/30
2.3K0
Threejs入门之二十二:Threejs中的屏幕坐标转标准设备坐标
Android获得控件在屏幕中的绝对坐标
计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标
他叫自己MR.张
2019/07/01
2.1K0
ThreeJS中三维世界坐标转换成二维屏幕坐标
Threejs全称是“Javascript 3D library”。WebGL是openGL在浏览器上的一个实现。Threejs对WebGL进行了封装,让前端开发人员在不需要掌握很多数学知识和绘图知识的情况下轻松进行web 3D开发,简单易用。
程序你好
2021/07/23
5.2K0
ThreeJS中三维世界坐标转换成二维屏幕坐标
【Android 屏幕适配】屏幕适配通用解决方案 ② ( 自定义组件解决方案 | 需要解决的问题 : 设计稿坐标数据转为屏幕真实坐标数据 | 实现步骤 )
使用的 dimens.xml 配置的方式 实现 屏幕适配 , 在 开发时 就 事先将对应屏幕分辨率的值换算好 并 配置到 dimens.xml 文件 中 , 在程序运行时只需要直接调用即可 , 不需要消耗资源进行额外的计算 ;
韩曙亮
2023/03/30
4590
与代码无关的网络安全
实际上,真实世界中的网络安全往往致力于解决非代码的漏洞,也就是说,除了传统的计算机网络安全之外,还会涉及到网络安全的管理、政策、法律和国际事务。借鉴于我们所熟知的OSI 7层协议模型,可以在之上增加组织、政府和国际事务的新分层,从而可以对与代码无关的网络安全问题进行分类,进而提出应对措施。
半吊子全栈工匠
2022/01/24
3280
与代码无关的网络安全
【100个 Unity实用技能】| Unity InputSystem中拿到触摸屏幕的坐标,鼠标的坐标等
在Unity的新输入系统InputSystem中,获取键盘鼠标的API发生了变化,不再是之前用Input.就可以拿到了。
呆呆敲代码的小Y
2022/10/05
3.3K1
【100个 Unity实用技能】| Unity InputSystem中拿到触摸屏幕的坐标,鼠标的坐标等
minigui/mgncs:双缓冲区实现窗口推拉特效
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/84951442
10km
2019/05/25
1.3K0
1341 与3和5无关的数
1341 与3和5无关的数 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 有一正整数a,如果它能被x整除,或者它的十进制表示法中某位上的数字为x,则称a与x相关.现求所有小于等于n的与3或5无关的正整数的平方和. 输入描述 Input Description 只有一行,一个正整数n(0<n<300) 输出描述 Output Description 只有一行,小于等于n的与3和5无关的正整数的平方和 样例输入 Sample
attack
2018/04/13
5750
坐标转换与姿态描述
为了能够科学的反映物体的运动特性,会在特定的坐标系中进行描述,一般情况下,分析飞行器运动特性经常要用到以下几种坐标系统1、大地坐标系统;2、地心固定坐标系统;3、本地北东地坐标系统;4、机载北东地坐标系统;5、机体轴坐标系统。 其中3、4、5在我们建模、设计控制律时都是经常需要使用的坐标系,描述物体(刚体)位姿信息的6个自由度信息都是在这三个坐标系中产生的
小飞侠xp
2019/10/13
2.5K0
Cocos Creator 坐标与转换
node.position是本地坐标,也就是在父节点中的坐标。 让父节点调用convertToWorldSpaceAR方法,把节点的本地坐标转换为世界坐标。
AnRFDev
2021/02/01
1.7K0
点击加载更多

相似问题

GetWindowRect返回错误坐标

28

Qt grabWindow坐标从GetCursorPos和GetWindowRect移动

21

SVG -与形状坐标无关的线性梯度

11

画布坐标与屏幕坐标的关系

10

引导列跨度与屏幕大小无关

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文