Android - 关于postDelayed和Threads的问题

时间:2010-06-03 19:39:43

标签: android multithreading runnable postdelayed

我对postDelayed有疑问。 android文档说它将runnable添加到队列中,并在UI线程中运行。这是什么意思?

那么,例如,我用来创建布局的相同线程用于运行Runnable?

如果我想将它作为在创建布局和定义活动时执行的独立线程怎么办?

由于 克里斯

2 个答案:

答案 0 :(得分:3)

是的,它将在UI线程上运行。

如果要运行后台线程,请按正常方式执行。

Thread t = new Thread(new Runnable(){});
t.start()

但是如果你想根据后台线程可能做的事情来改变UI,那么你可以使用postDelayed()。

UI的任何更改都必须在主UI线程上完成。

答案 1 :(得分:1)

恭喜!你找到了一个有多个解决方案的地方。

  1. 处理程序和PostDelayed可以很好地轻量级地定期调用前台活动。甚至消息也被重用。这些用于Snake示例程序(Snake / SnakeView.java / sleep())以使蛇移动。它运行为“发布延迟500毫秒的消息”,在500毫秒内捕获它在HandleMessage(Handlers的默认值),移动,然后再次发送。甚至消息也会与obtainMessage()一起重用。我已经使用它们在按下按钮时进行按钮更新。

  2. 线程有点重。您可以将这些用于后台或已用于运行线程的位置。制作一个'新线程(aRunnable).start()'。我没有在Android上使用它们。

  3. 使用StartActivityForResult()启动Intent并使用OnActivityResult捕获结果以生成标准RPC。有关详细信息,请参阅记事本示例的步骤2.

  4. 查看针对不同场景启动的更多Intent。我发现将“创建和启动意图”放入单独的功能有助于维护和调试。

  5. 祝你好运!