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

0 投票
30 回答
900501 浏览

android - 无法在未调用 Looper.prepare() 的线程内创建处理程序

以下异常是什么意思;我该如何解决?

这是代码:

这是一个例外:

0 投票
2 回答
1827 浏览

android - Android 方法 onCreate() 中的线程在 10% 的情况下仍然会停止 UiThread

这是我的应用程序的第一个活动的 onCreate 方法。它初始化所有小部件,然后启动一个线程以从互联网加载模型数据。在某些情况下,当网络真的很慢或没有响应时,"initializeModelThread"似乎占用了整个 CPU 并且不允许 onCreate Methode 完成。

在一种情况下,我看到它Log.v("Time...)在 300 毫秒后被调用,但屏幕保持黑色大约 20 秒,直到 HttpException 停止了initalizeModelThread. 您已经可以看到我将线程的优先级设置为低。

在这种情况下使用 AsyncTask 会有所帮助吗?你对这个问题还有其他想法吗?

0 投票
1 回答
1215 浏览

android - Android:TabActivity - 在 AsyncTask 完成之前不添加任何选项卡

我有一个实现 TabContentFactory 的 TabActivity,它在 onCreate() 中启动一个 AsyncTask 以获取选项卡的数据。当 AsyncTask 完成后, onPostExecute() 可以直接更新 UI 元素,对吧?这意味着,由于该方法在 UI 线程中运行,因此在访问 UI 元素时不需要进一步的线程同步?

无论如何,我遇到的问题是我的 UI 线程在 TabActivity 中调用 createTabContent() 而 AsyncTask 仍然很忙。我必须添加至少一个选项卡,否则我会收到 NullPointerException。但是,当我的 AsyncTask 完成并且 ProgressDialog 已被关闭时,如何只添加选项卡?

如果有人可以提供帮助,我会很高兴...

0 投票
1 回答
1817 浏览

silverlight - 在不挂起 UI 的情况下更新 ObservableCollection

是否可以在不挂到 UI 的情况下更新大型 ObservableCollection(即添加项目)?

我想知道是否是因为我有一个相对较大的循环(500 次迭代),每次迭代都会向集合中添加一个项目。

或者,是否正在刷新集合并通知 UI 更改。

或两者!

我确实遇到过这个线程,但这可能是一个关于调度程序的完全不同的问题(为什么要使用调度程序帮助?): Using BackgroundWorker to update UI without freezes...?

0 投票
3 回答
3171 浏览

java - Android ProgressDialog 不会旋转

这是我的第一个 stackoverflow 帖子,所以请对我温柔一点!我确信我正在尝试做的事情是可能的,并且是我已经做过(或没有做过?)的事情导致了问题......我只是不确定那是什么

我正在尝试做的事情:
在我的应用程序同步和处理下载的数据时显示 ProgressDialog。

问题:
ProgressDialog 显示但不旋转(这使它看起来像已冻结),同步和处理发生,ProgressDialog 关闭,应用程序正常继续。

我目前如何做到这一点:
创建一个 ProgressDialog - 在我的活动
中进行同步 - 在我的服务中
处理数据 - 在我的服务中
Dismis the ProgressDialog - 在我的活动中

我尝试过的事情:
使用线程(下面的代码)使用AsynTask(如果需要可以提供代码)使用处理程序(如果需要可以提供代码)

在花了很多时间寻找我的问题的答案之后,似乎其他人也遇到了相同或相似的问题,并设法使用上述想法之一解决了它。但是,我无法实施任何这些想法来解决我的特定问题。这让我确定这是我做错的事情......我只是不确定是什么。

我编写并用作所有尝试修复的基础的原始代码:
首先

然后

所以现在我假设 doBind 发生在不同的线程中,使 UI 线程除了显示 ProgressDialogue 之外无事可做......?

如果您需要任何进一步的信息来帮助我解决这个问题,请告诉我。


编辑:

这是我用来代替处理程序的代码。这显示与以前相同的行为(微调器不旋转)。

.

.

0 投票
1 回答
3853 浏览

multithreading - WP7 - 访问 UI 线程?

如何访问 WP7 应用程序的 UI 线程?
如果有帮助,我正在使用以下代码。


0 投票
1 回答
802 浏览

android - 设置 TextView 从另一个线程可见或在 Android 中 BeginInvoke

我正在开发一个 Android 2.2 应用程序。

我有一个活动的事件监听器,我想在收到事件时设置一个可见的 TextView。但是有一个错误:

我只能将它设置为从 UI 线程可见。

在 C# 和 Windows Mobile 中有一个 BeginInvoke。Android中是否有类似的东西?

谢谢。

0 投票
2 回答
4114 浏览

android - SQLite 查询在 UI 线程上运行 ExpandableListView/SimpleCursorTreeAdapter

我正在开发一个用于显示许多 RSS 提要的 Android 应用程序(是的,我知道已经有很多这样的应用程序)。要显示的数据由内容提供商提供支持,我希望向后兼容 API 级别 4。

我正在使用一个ExpandableListView来显示三个不同 RSS 提要的内容。的ExpandableListView适配器实现为 的子类SimpleCursorTreeAdapter

使用此设置,所有内容都按预期加载。但是,在加载列表内容期间, UI 会随机挂起/卡住。通常不足以获得 ANR,但仍然很明显且非常烦人!

为了调试这个问题,我启用了 android.os.StrictMode(很棒的新功能/工具顺便说一句!),并启动了模拟器(在 Android 2.3 上)。加载列表内容后,我得到以下 StrictMode 输出:

这似乎有道理!在SimpleCursorTreeAdapter.getChildrenCursor()中,在 UI 线程上查询内容提供者,这当然是个坏主意,肯定会挂掉 UI!

我查看了(的超类)的JavaDoc(API 级别 4),它说: CursorTreeAdapterSimpleCursorTreeAdaptergetChildrenCursor()

“如果您想异步查询提供程序以防止阻塞 UI,可以返回 null 并在稍后调用 setChildrenCursor(int, Cursor)。” .

伟大的!让我们这样做吧!我更改了我的实现getChildrenCursor()以启动一个新任务,该任务负责执行查询并在适配器上设置子光标。开始任务后,我只返回 null in getChildrenCursor()

,其中RefreshChildrenCursorTask实现为:

我在 2.3 模拟器上重新安装了该应用程序并启动它。它就像一个魅力,再见非响应式用户界面!但喜悦并没有持续多久……接下来要做的是在目标设备上运行相同的代码(在本例中是运行 Android 2.2 的三星 Galaxy S)。然后我Exception在加载列表提要内容期间得到以下信息:

快速查看 的源代码SimpleCursorTreeAdapter告诉我,它无法处理从getChildrenCursor(). 他们似乎已经在 Android 2.3 中解决了这个问题,但是你应该如何在早期版本的 Android 中解决这个问题?我真的必须编写自己的实现CursorTreeAdapter才能异步刷新子光标吗?

有没有人遇到过同样的问题,甚至可能找到了(可行的)解决方法?如果没有,任何人都可以给我一个关于如何进行的提示!?我真的很感激我能得到的任何帮助!

提前致谢!

问候,雅各布

0 投票
2 回答
1072 浏览

wpf - 数据绑定是否总是编组到 UI 线程?

当绑定到 Silverlight 3 和 4 中的属性时,Windows Phone 7 版本的 silverlight 以及 WPF 3.5 和 4 中的属性更改通知是否总是编组到 UI 线程?您是否知道我不能依赖它并且必须在我的代码中进行编组的任何情况?

0 投票
1 回答
385 浏览

android - 在 Android 中开始新活动之前,如何在 onClickListener 中处理 UI 更改?

我一直在这个论坛上搜索,但我找不到我的问题的任何答案。我有以下问题:

我有一个图像视图和两个文本,我想在加载下一个活动之前更改选择的颜色以显示视觉反馈。

我希望更改按钮和文本,然后开始新的活动。但是,文本没有改变,活动开始。如果我在 UI 线程 (runOnUiThread(new Runnable() {...}) 上调用可运行对象中的三行,那么更改会在活动启动之前应用。这实际上很奇怪,因为 onClick 方法是在主线程又名 UI 线程。

这是否意味着对 UI 线程的更改不会立即在 UI 线程上执行?还是我做错了什么?

最好的,亚当