问题标签 [ui-thread]
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 - 视图组未绘制其子项
我有一个从 sdcard 获取位图的活动。它的视图设置为自定义视图组。我已将包含位图的视图动态添加到视图组,并使用处理程序更新 UI 线程中的视图组,但无济于事。视图组不显示位图。我没有自己编写的视图组代码,但应该允许用户滑动屏幕以加载不同的视图/位图。
我检查了位图是否不为空,并将日志语句放在两个文件的不同位置。关于为什么视图组的孩子没有被绘制的任何想法?
活动
视图组
输出:
java - Android:x秒后多次更新gridview
我在每 x 秒更新一次 android 中的视图时遇到问题。
为了了解 android 的工作原理,我正在编写一个小游戏。它有一个保存游戏循环的 GameController。在循环内部,逻辑被执行,之后 gui 将被告知更改。
问题是在视图中看不到更改。视图保持不变,直到游戏循环完成并且只更新一次。
这是我的代码(重要部分):
游戏控制器.java:
游戏活动.java:
文本适配器.java:
我用谷歌搜索了很多,也尝试了很多(我确实知道这里已经问过类似的问题,但他们也没有帮助我),但不知何故它不起作用。我无法让视图和逻辑在 android 的不同线程上运行,如果它们在同一个线程上运行,逻辑会阻塞视图。任何帮助将不胜感激。
// 编辑:
如果我尝试 new Thread(c).start(); LogCat sais:java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序
如果我添加 Looper.prepare(); : java.lang.RuntimeException: 无法启动活动 ComponentInfo{GameActivity}: java.lang.RuntimeException: 每个线程只能创建一个 Looper
如果我尝试 this.runOnUiThread(c); 没有错误。
android - android应用程序的主线程在哪里?
我编写了一个游戏(我将其命名为“Gamer”),其中我具有以下一般结构(代码已大大简化):
游戏一切正常,非常强大。现在我想测试某个条件,如果是真的,就设置一个 AlertDialog。我假设我可以将这段代码放在我的 onDraw 方法中。然后我收到一条消息“无法在未调用 Looper.prepare() 的线程内创建处理程序”——这让我感到困惑,因为我认为 onDraw 方法正在由我认为不需要的主线程执行设置任何东西。
我想我可以通过将我的测试和对话框移动到主线程中的某个地方(在哪里?)或在某个地方添加一些 Looper.prepare() 代码来解决这个问题。
请有人告诉我哪个更容易 - 任何必要的代码应该放在哪里。
c# - 从流程中捕获输出流并在简单窗口中显示
我有点难过。我以前曾与后台工作人员合作过,并且在我的应用程序中的许多位置都有他们。为了显示正在发生的事情的“进度”,但使用措辞而不是仅仅“完成百分比”,我创建了一个简单的“窗口”。在这个窗口中,我有一个简单的标签。由于后台工作线程与 UI 线程的问题,我无法直接访问,所以我在 Window 上有一个“setter”,它只做
因此,当通过 BGW“ReportsProgress”并将任何消息传递给窗口的“NewStatus”设置器时(因此它在正确的 UI 线程上运行)。这一切都很完美,没有问题……只要后台工作人员在 C#.Net 应用程序中做某事。
接下来...我需要运行带有一些命令参数的 DOS 命令,但不想看到丑陋的黑色窗口。因此,从其他线程中,我发现并完美地完成了该部分。没问题。因此,此时,两个元素之间的所有语法和功能(后台工作人员刷新状态的窗口)和(调用 DOS 命令以运行某些参数化实用程序)。
现在,问题。尝试在运行 DOS 命令时刷新窗口状态。因此,这让我接触到“OutputDataReceived”来一次重定向输出和捕获行(这是完美的)。
然后在 DOSOutputHandler 中,我有
这只是挂起并且永远不会在 UI 线程上执行对窗口的更新。所以,我认为......尝试将 DOS 命令包装到 BGW 线程中......所以,我这样做......几乎所有相同的,所以,从我正在捕获其输出流的 DOS 命令,BGW 线程得到它. 然后我尝试将该字符串值转发到 Window 状态,但它似乎挂起......几乎就像 UI 线程一样,调用一个 BGW 线程,它正在调用一个进程(它自己的新线程)不想玩的不错。
有任何想法吗?
java - java - 如何在Java中的非UI线程中使用OleFrame?
请您指教如何使用
在非 UI 线程中?如果在非 UI 线程中完成,则创建一个“OleFrame”。我确实知道 UI 和非 UI 线程之间的区别。我想要实现的是org.eclipse.swt.ole.win32.OleAutomation
在`IRunnableWithProgress
添加
(mShell
在构造函数中给出)在每个 OLE 调用之后有一点帮助,但还不够......
任何帮助将不胜感激。
.
android - 如何在 Android UI 线程异步中执行一些代码?
我是 Android 开发的新手。我已经在 Swing 和 SWT 上工作了好几年了。Swing 和 SWT 都有在 UI 线程同步和异步中执行代码的策略。典型的用法是在一个线程中做一些耗时的人员,然后在 UI 线程异步中显示结果。
所以我的问题是,Android 中是否有类似的策略?这是我的代码。参数runnable是一些耗时的代码。此方法将在执行期间显示一个等待对话框,然后期望在完成后显示一个 Toast。但是 Toast 需要在 UI 线程中显示。那么该怎么做呢?
还有关于Android UI系统的一些话吗?比如它是不是线程安全的,线程如何协同工作等等。非常感谢!
c# - 当我在某个线程中时,我如何让 UI 线程执行命令
当我在某个线程中时,我如何让 UIthread 执行命令下面的代码被一个线程调用但是我想在 UIthread 中运行的行..如果我这样调用它就不起作用..
表格有点滞后并且进程风扇变得很快,就像它在无限循环中一样......然后它给了我一个错误“stackoverflowexception”
我的应用程序是一个文件管理器..(复制,剪切,粘贴,新文件夹..etc)..和dirRecursive(字符串路径) ..向我显示listView中的文件和文件夹及其图标,所以每次我做类似的事情(新文件夹或粘贴)我必须调用dirRecursive来更新 listView
笔记:
请帮助:)提前谢谢
c#-4.0 - Passing a `Disposable` object safely to the UI thread with TPL
We recently adopted the TPL as the toolkit for running some heavy background tasks.
These tasks typically produce a single object that implements IDisposable
. This is because it has some OS handles internally.
What I want to happen is that the object produced by the background thread will be properly disposed at all times, also when the handover coincides with application shutdown.
After some thinking, I wrote this:
The background Task
calls RunOnUiThread
to pass its result to the UI thread. The task t
is scheduled on the UI thread, and takes ownership of the data
passed in. I was expecting that if t
could not be executed because the ui thread's message pump was shut down, the continuation would run, and I could see that that the task had failed, and dispose the object myself. DisposeObject()
is a helper that checks if the object is actually IDisposable, and non-null, prior to disposing it.
Sadly, it does not work. If I close the application after the background task t
is created, the continuation is not executed.
I solved this problem before. At that time I was using the Threadpool and the WPF Dispatcher to post messages on the UI thread. It wasn't very pretty, but in the end it worked. I was hoping that the TPL was better at this scenario. It would even be better if I could somehow teach the TPL that it should Dispose all leftover AsyncState objects if they implement IDisposable.
So, the code is mainly to illustrate the problem. I want to learn about any solution that allows me to safely handover Disposable objects to the UI thread from background Tasks, and preferably one with as little code as possible.
android - 异步任务在 doinbackground 中休眠,锁定 UI 线程
编辑:已解决。对不起,伙计们,我突然想到,虽然我的数据加载是在后台线程中发生的,但解析数据的回调却没有。数据的解析花费了很长时间,这就是锁定我的线程的原因。
编辑:我注意到我的首要问题(ProgressDialog 不再旋转)可能是由我使用 ProgressDialog 的问题引起的,而不是 UI 线程被阻塞。如果是这种情况,我该如何解决?
编辑:澄清一下,这不会永远锁定整个程序。加载完所有内容后,将关闭进度对话框,并启动新活动。我的问题是,当它正在加载时,整个 UI 被锁定(即进度对话框停止旋转)
TL;DR:doInBackground() 中的 Thread.sleep() 正在锁定 UI 线程
我有一个应用程序,当一个特定的活动打开时,它开始从我的后端在后台加载大量数据,例如,与计划相关的大量数据。该信息不会立即使用,但可以在用户尝试访问它时使用(即通过单击计划按钮并启动计划活动)。
如果用户在单击计划按钮之前稍等片刻,所有数据都会加载,计划活动将打开,并显示一切都很好。我的问题是如果他们在数据加载之前单击按钮。
我的解决方案是创建一个显示 ProgressDialog 的 ASyncTask,同时定期检查数据是否已完成加载,否则休眠。它通过一些应用程序范围的布尔变量知道数据已完成加载。我的问题是,即使 Thread.sleep() 在 doinbackground() 中运行,它仍然会锁定 UI 线程。
我正在使用自定义 ASyncTask,定义如下:
并通过(例如)调用它:
(我将全局变量的访问缩短为“loadingSchedule”以使其更易于阅读)
如何使它不锁定 UI 线程?
android - Android 应用程序:UIThread 阻塞 5 秒后会收到“应用程序无响应”吗?
Android 开发者网站上曾说过:我们不应该在工作中使用长操作UIThread
。相反,我们应该在另一个线程上进行。在这个网站上,他们仍然说:
如果 UI 线程被阻塞超过几秒(目前大约 5 秒),用户会看到臭名昭著的“应用程序无响应”(ANR)对话框。
为了检验这个说法,我做了一个证明。这是我的代码:
如您所见,我让当前线程 ( UIThread
) 休眠 8 秒。所以,我想,如果我运行这个应用程序,Android 会注意到:“应用程序没有响应”。但是,我没有看到任何错误。程序运行顺利(我也看到文本“结束等待”)。
那么,谁能为我解释一下我的代码。请问我做错了什么。
谢谢 :)