java - 安卓/Java。 AsyncTask/Thread 在我需要时将数据传递回 UI(不仅在执行前/执行后)

标签 java android multithreading asynchronous queue

我正在努力解决 android 中的一些线程问题。 情况是,我有一个表,该表在用户的 ui 操作期间被填充。

并且该表被添加到队列中。到目前为止我选择了LinkedBlockingQueue。 (如果这是一个坏主意,请纠正我)。

同时有一个后台线程,它应该获取(读取)队列并准备另一个表,然后将其本身传递给一个方法,该方法应该在 UI 线程上调用。
(这意味着,后台线程仅在后台收集排队表,以便稍后将它们传递给另一个方法)。

因此,我阅读了以某种方式执行此操作的各种方法,并发现自己处于 AsyncTask 中。

但是 AsyncTask 只允许我将预执行或后执行作为在 UI 线程中调用方法/代码的选项。

当我在 UI 线程上调用某些方法时,我想自己决定,因为后台线程在调用 UI 线程中的方法后仍然需要做一些工作。

啊,作为信息:
除非用户退出应用程序或发生特殊的空闲超时,否则后台线程永远不会停止。
并且:在 UI 线程上调用上述方法也将被参数化。

最佳答案

But async task only allows me pre execution or post execution as options to invoke methods/code in the ui thread.

没有。 onProgressUpdate()也运行在UI Thread上。您可以通过调用publishProgress()来运行此函数。在doInBackground()UI需要在后台操作仍在运行时更新。

Here is an answer with an example of using it

publishProgress() Docs

请务必通读 AsyncTask Docs彻底几次。一开始它们有点棘手,直到你明白为止。

关于java - 安卓/Java。 AsyncTask/Thread 在我需要时将数据传递回 UI(不仅在执行前/执行后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639336/

相关文章:

java - 当我尝试保存新凭据时,Jenkins 通过 SSH 发布出现错误

java - 单击停止按钮后 TimerTask 没有停止

java - Android - 将 XML 布局堆叠在一起

java - 使用二进制信号量

java - 解决并发问题的最佳方法

java - 在静态方法中使用Log4j2

java - 多线程环境中的快速 MultiMap

java - 包名别名或昵称

android - 如何在 Android 中以编程方式插入 'profile' 联系人?

Java 内存模型和最终字段