问题标签 [android-handlerthread]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何使用 HandlerThread 来处理 2 个线程
我有一个扩展 HandlerThread 并实现 Handler.Callback 的类。我无法理解如何设置处理程序以在此方案下相互发送消息。我的 Handler1 需要与 Handler2 对话,反之亦然,但因为这是在一个拥有自己的 looper 的 HandlerThread 中实现的,所以我不确定如何实例化这些对象。我只是坚持如何将其应用于语法。我已经在下面发布了我的破解。任何帮助表示赞赏。
}
android - 保持 HandlerThread 存活的成本
在我的 android 应用程序中,我正在监听几个系统事件(它们不会经常被触发),并且在每个事件之后我发布一个任务,该任务在后台短暂延迟(通常为 1 分钟)后执行。(任务完成后,等待一些条件,可以再次发布)
我的方法是实例化一个具有 HandlerThread 的 Singleton 并将我的任务发布到该处理程序线程。(见下面的代码片段)我明白这个线程现在在我的应用程序的整个生命周期中都是活跃的。
我的问题是:
保持 HandlerThread 活动是否会影响性能,即使它没有做任何工作?
android - 无法从线程类向内部处理程序类发送消息
假设我有以下课程......
并从...开始
问题是SignalRHandler
无法接收从主类发送的消息。
我确定我做错了什么请指教...
android - HandlerThread和Handler:如何使用AudioRecord.setRecordPositionUpdateListener?
我对Handler
和HandlerThread
类的使用感到困惑。我尝试使用它们的原因是我想利用AudioRecord
类及其setRecordPositionUpdateListener
方法(参考)。方法描述说:
使用此方法在与另一个线程关联的处理程序中接收 AudioRecord 事件,而不是您在其中创建 AudioTrack 实例的线程。
这正是我想要的 -AudioRecord
在主线程中设置,但在工作线程中接收数据。我想我需要一个HandlerThread
,所以我创建并启动了一个。我还定义了一个实现AudioRecord.OnRecordPositionUpdateListener
接口的回调方法。我希望从 worker 调用此回调HandlerThread
。我现在不明白的是如何创建Handler
传递给setRecordPositionUpdateListener
.
android - Android:启动 HandlerThread 后会发生什么?
在 thread.start() 返回后,与等待消息到达消息队列的线程相关联的 looper 是否?如果是这样,那么我需要做的就是将这个线程的looper与一个实现handleMessage()的类关联起来。这会是正确的实现吗?
java - HandlerThread 中的消息丢失
我有一个扩展 HandlerThread 类的类,用于在需要时在 GridView 中从设备上的照片创建位图,但有时它不是创建照片位图,而是填充 GridView 项目(ImageView)而没有任何内容,我不明白为什么这正在发生。请帮忙=)
处理线程类:
}
网格视图类:
}
还有一个制作位图的类:
android - 在 HandlerThread.quit() 之后第二次调用 HandlerThread.start() 时出现 IllegalThreadStateException
第一次,我调用 HandlerThread.start() 来处理后台服务。在所有的东西都完成之后,我想通过调用 HandlerThread.quit() 来结束这个线程。
然后第二次,我启动这个 Handler,并检查了 HandlerThread.isAlive(),isAlive() 返回 false,但是当我通过 HandlerThread.start() 再次调用 HandlerThread 时。
但是我得到了IllegalThreadStateException,为什么?
在我再次安全地调用 handlerThread.start() 之前,我如何才能真正停止 HandlerThread?
java - Android 通过 Thread/Runnable/Handler/Looper 方法执行简单的异步任务
我的任务是在 5 秒延迟后使用,Thread.sleep(5000)
在按钮上单击使用Handler
///方法而不是实现. 我的问题是,我在网上查找有关如何使用上述方法执行此任务的示例时遇到问题。那么,按照常见/相关的做法,我将如何实现我上面描述的这个简单任务?Looper
Thread
Runnable
AsyncTask
HandlerThread
Looper
经过思考(我现在主要想知道我上面提到的问题):
- 我想确保多次单击 Button 不会在每次单击时重新启动该过程(仅在 5 秒结束后)。
- 我想让这个简单的任务在整个方向变化中保持不变,即使方向发生在通过 5 秒延迟发生的中间
Thread.sleep(5000)
之后,之后想:
- 显示随机数的 Button 和 TextView 存在于我
MainActivity
调用的片段中。
android - getLooper() 启动 HandlerThread 后返回 null
我有一个类 extends HandlerThread
,它看起来像这样:
如上所示,该prepare()
函数启动线程并等待run()
完成,然后尝试获取 looper。
在另一个类中,我创建了一个MyHandlerThread
& 启动它的实例:
控制台中显示的日志:
为什么在函数中,尽管线程已经启动(已执行)prepare()
,但调用getLooper()
返回null ?run()
android - Android中两个HandlerThread之间的同步对象
我想在两个处理程序线程对象之间同步 Android 中的对象模型。一个对象是“可观察的”,第二个是观察者。它们都无限地在自己的线程中工作。观察者通过“registerListener”方法注册到 observable 并传递自己的引用和自己的 Handler。
并且可观察对象通过他们的回调方法(通过处理程序)传递给他们的观察者对象模型。对象模型被声明为“final”,因为我不会创建无限新的对象,而是用新值(getter 和 setter)更新其字段。
我不想将对象引用传递给观察者(对象是可变的)并且我不想使用“同步”关键字,因为我不想阻塞线程。
所以我的想法是在“可观察”对象中创建两个相同的对象模型。它们都将是“最终的”,其中一个将由“可观察”对象使用并在其线程中更改,第二个将根据观察者线程中的第一个对象进行更改。因此,对象将由观察者处理程序同步。这是个好主意吗?我希望我的描述清楚。