And*_*lva 53 multithreading android handler android-asynctask
我遇到过Handler和runOnUiThread概念.但对我来说,它们似乎仍然存在疑问,因为它们确实存在哪些不同之处.
它们都旨在从后台线程执行UI操作.但是,当我们在两种方法中进行选择时,要考虑的因素是什么.
例如,考虑一个Runnable Thread在后台执行Web服务的人,现在我想更新UI.
更新我的UI的最佳方法是什么?我应该去Handler还是runOnUiThread?
我仍然知道我可以使用AsyncTask并使用onPostExecute.但我只想知道其中的区别.
Hit*_*sit 75
Activity.runOnUiThread()是更通用的处理程序的特例.随着Handler你可以创建自己的线程中自己的事件查询.使用默认构造函数Handlers实例化并不意味着" 代码将在UI线程上运行 ".默认情况下,处理程序绑定到从中实例化的处理程序. Thread
要创建Handler保证绑定到UI(主)线程,您应该创建Handler绑定到Main Looper的对象, 如下所示:
Handler mHandler = new Handler(Looper.getMainLooper());
Run Code Online (Sandbox Code Playgroud)
而且,如果你检查runOnUiThread()方法的实现,它是Handler用来做的事情:
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
Run Code Online (Sandbox Code Playgroud)
正如您从上面的代码片段中看到的那样Runnable action,如果runOnUiThread()从UI线程调用,将立即执行.否则,它会将其发布到Handler,稍后将在某个时间点执行.
| 归档时间: |
|
| 查看次数: |
24028 次 |
| 最近记录: |