在我的Android应用程序中,我正在提取代码以将UI元素更新为单独的实用程序包以供重用.如果当前执行上下文来自UI线程而非非UI线程,我希望我的代码是主动的并以不同方式更新UI.
是否有可能以编程方式确定当前执行是否发生在UI线程上?
我想要实现的一个简单的例子就是这个 - 我的应用程序一直在更新很多内容TextView.所以,我想有一个像这样的静态实用程序:
public static void setTextOnTextView(TextView tv, CharSequence text){
tv.setText(text);
}
Run Code Online (Sandbox Code Playgroud)
如果从非UI线程调用,这显然不起作用.在这种情况下,我想强制客户端代码也传入Handler,并将UI操作发布到处理程序.
为什么不使用 runOnUiThread 方法Activity
它需要一个可运行对象,并且要么立即运行它(如果从 UI 线程调用),要么将其发布到 UI 线程的事件队列。
这样您就不必担心您的方法是否已从 UI 线程调用。
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |