问题标签 [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.

0 投票
1 回答
571 浏览

android - 如何使用 HandlerThread 来处理 2 个线程

我有一个扩展 HandlerThread 并实现 Handler.Callback 的类。我无法理解如何设置处理程序以在此方案下相互发送消息。我的 Handler1 需要与 Handler2 对话,反之亦然,但因为这是在一个拥有自己的 looper 的 HandlerThread 中实现的,所以我不确定如何实例化这些对象。我只是坚持如何将其应用于语法。我已经在下面发布了我的破解。任何帮助表示赞赏。

}

0 投票
0 回答
349 浏览

android - 保持 HandlerThread 存活的成本

在我的 android 应用程序中,我正在监听几个系统事件(它们不会经常被触发),并且在每个事件之后我发布一个任务,该任务在后台短暂延迟(通常为 1 分钟)后执行。(任务完成后,等待一些条件,可以再次发布)

我的方法是实例化一个具有 HandlerThread 的 Singleton 并将我的任务发布到该处理程序线程。(见下面的代码片段)我明白这个线程现在在我的应用程序的整个生命周期中都是活跃的。
我的问题是:
保持 HandlerThread 活动是否会影响性能,即使它没有做任何工作?

0 投票
0 回答
174 浏览

android - 无法从线程类向内部处理程序类发送消息

假设我有以下课程......

并从...开始

问题是SignalRHandler无法接收从主类发送的消息。

我确定我做错了什么请指教...

0 投票
1 回答
617 浏览

android - HandlerThread和Handler:如何使用AudioRecord.setRecordPositionUpdateListener?

我对HandlerHandlerThread类的使用感到困惑。我尝试使用它们的原因是我想利用AudioRecord类及其setRecordPositionUpdateListener方法(参考)。方法描述说:

使用此方法在与另一个线程关联的处理程序中接收 AudioRecord 事件,而不是您在其中创建 AudioTrack 实例的线程。

这正是我想要的 -AudioRecord在主线程中设置,但在工作线程中接收数据。我想我需要一个HandlerThread,所以我创建并启动了一个。我还定义了一个实现AudioRecord.OnRecordPositionUpdateListener接口的回调方法。我希望从 worker 调用此回调HandlerThread。我现在不明白的是如何创建Handler传递给setRecordPositionUpdateListener.

0 投票
1 回答
652 浏览

android - Android:启动 HandlerThread 后会发生什么?

在 thread.start() 返回后,与等待消息到达消息队列的线程相关联的 looper 是否?如果是这样,那么我需要做的就是将这个线程的looper与一个实现handleMessage()的类关联起来。这会是正确的实现吗?

0 投票
1 回答
332 浏览

java - HandlerThread 中的消息丢失

我有一个扩展 HandlerThread 类的类,用于在需要时在 GridView 中从设备上的照片创建位图,但有时它不是创建照片位图,而是填充 GridView 项目(ImageView)而没有任何内容,我不明白为什么这正在发生。请帮忙=)

处理线程类:

}

网格视图类:

}

还有一个制作位图的类:

0 投票
2 回答
864 浏览

android - 在 HandlerThread.quit() 之后第二次调用 HandlerThread.start() 时出现 IllegalThreadStateException

第一次,我调用 HandlerThread.start() 来处理后台服务。在所有的东西都完成之后,我想通过调用 HandlerThread.quit() 来结束这个线程。

然后第二次,我启动这个 Handler,并检查了 HandlerThread.isAlive(),isAlive() 返回 false,但是当我通过 HandlerThread.start() 再次调用 HandlerThread 时。

但是我得到了IllegalThreadStateException为什么

在我再次安全地调用 handlerThread.start() 之前,我如何才能真正停止 HandlerThread?

0 投票
0 回答
165 浏览

java - Android 通过 Thread/Runnable/Handler/Looper 方法执行简单的异步任务

我的任务是在 5 秒延迟后使用,Thread.sleep(5000)在按钮上单击使用Handler///方法而不是实现. 我的问题是,我在网上查找有关如何使用上述方法执行此任务的示例时遇到问题。那么,按照常见/相关的做法,我将如何实现我上面描述的这个简单任务?LooperThreadRunnableAsyncTaskHandlerThreadLooper

经过思考(我现在主要想知道我上面提到的问题):

  • 我想确保多次单击 Button 不会在每次单击时重新启动该过程(仅在 5 秒结束后)。
  • 我想让这个简单的任务在整个方向变化中保持不变,即使方向发生在通过 5 秒延迟发生的中间Thread.sleep(5000)

之后,之后想:

  • 显示随机数的 Button 和 TextView 存在于我MainActivity调用的片段中。
0 投票
1 回答
3009 浏览

android - getLooper() 启动 HandlerThread 后返回 null

我有一个类 extends HandlerThread,它看起来像这样:

如上所示,该prepare()函数启动线程并等待run()完成,然后尝试获取 looper。

在另一个类中,我创建了一个MyHandlerThread& 启动它的实例:

控制台中显示的日志:

为什么在函数中,尽管线程已经启动(已执行)prepare(),但调用getLooper()返回null ?run()

0 投票
3 回答
373 浏览

android - Android中两个HandlerThread之间的同步对象

我想在两个处理程序线程对象之间同步 Android 中的对象模型。一个对象是“可观察的”,第二个是观察者。它们都无限地在自己的线程中工作。观察者通过“registerListener”方法注册到 observable 并传递自己的引用和自己的 Handler。

并且可观察对象通过他们的回调方法(通过处理程序)传递给他们的观察者对象模型。对象模型被声明为“final”,因为我不会创建无限新的对象,而是用新值(getter 和 setter)更新其字段。

我不想将对象引用传递给观察者(对象是可变的)并且我不想使用“同步”关键字,因为我不想阻塞线程。

所以我的想法是在“可观察”对象中创建两个相同的对象模型。它们都将是“最终的”,其中一个将由“可观察”对象使用并在其线程中更改,第二个将根据观察者线程中的第一个对象进行更改。因此,对象将由观察者处理程序同步。这是个好主意吗?我希望我的描述清楚。