在我的 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/