android - 以编程方式确定代码是否从 UI 线程执行

标签 android

在我的 Android 应用程序中,我将更新 UI 元素的代码提取到一个单独的实用程序包中以供重用。如果当前执行上下文来自 UI 线程而不是非 UI 线程,我希望我的代码能够主动并以不同方式更新 UI。

是否可以通过编程方式确定当前执行是否发生在 UI 线程上?

我希望实现的一个简单示例是:我的应用程序一直在更新大量 TextView。所以,我想要一个像这样的静态实用程序:

public static void setTextOnTextView(TextView tv, CharSequence text){
    tv.setText(text);
}

如果从非 UI 线程调用,这显然不会起作用。在那种情况下,我想强制客户端代码也传递一个 Handler,并将 UI 操作发布到处理程序。

最佳答案

为什么不用Activity中的runOnUiThread方法

它接受一个 runnable 并立即运行它(如果从 UI 线程调用),或者将它发布到 UI 线程的事件队列。

这样您就不必担心您的方法是否已从 UI 线程调用。

关于android - 以编程方式确定代码是否从 UI 线程执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8137533/

相关文章:

java - 将 xml 输入流式传输到 sax 解析器,如何打印流式传输的 xml?

android - 如何在不修改原始可绘制对象的情况下设置 vectorDrawable 的色调?

android - 在android中动态移动图像

Android:使用 junit 4.13 时 Unresolved reference

android - Android 中 keystore 有效性的含义是什么?

android - 您最近提交的应用因违反 Google Play 开发者计划政策而被拒绝

java - 在Android中运行 Espresso 测试时出现内存不足的问题

java - 从 Android 应用程序启动包含消息和收件人的 Telegram 应用程序

android - 使用 json 获取查询 - Retrofit 2.0

android - Flutter:任务 ':location:compileDebugKotlin' 执行失败