我的Android应用程序中的非UI线程包含一个Handler对象,我使用post()方法将Runnable的实现添加到此Handler中。
通过阅读API,似乎Handler使用了一个队列。这是否意味着如果我将2个Runnables发布到队列中,那么第二个只能在完成第一个Runnable的run方法时开始执行?
我想在我的应用程序中看到一些多线程问题时确认这一点。
由于
答案 0 :(得分:2)
(据我理解你的问题)
根据API,Handler使用MessageQueue,第二个runnable执行在第一个完成后开始,
Handler允许您发送和处理与线程的MessageQueue关联的Message和Runnable对象。每个Handler实例都与一个线程和该线程的消息队列相关联。当您创建一个新的Handler时,它被绑定到正在创建它的线程的线程/消息队列 - 从那时起,它将消息和runnables传递给该消息队列并在消息出来时执行它们队列中。
Handler有两个主要用途:(1)安排消息和runnables作为将来的某个点执行; (2)将要在不同于自己的线程上执行的操作排入队列。
答案 1 :(得分:1)
A Handler allows you to send and process Message and Runnable
objects associated with a thread's MessageQueue. Each Handler
instance is associated with a single thread and that thread's
message queue. When you create a new Handler, it is bound to
the thread / message queue of the thread that is creating it
-- from that point on, it will deliver messages and runnables
to that message queue and execute them as they come out of the
message queue.
There are two main uses for a Handler:
-1- to schedule messages and runnables to be
executed as some point in the future; and
-2- to enqueue an action to be performed on a
different thread than your own.
引自:http://developer.android.com/reference/android/os/Handler.html
与您的问题相关,它是YES
,第二个将在第一个Runnable完成后运行。