2010-06-03 142 views
2

我有一个关于postDelayed的问题。 android文档说它将runnable添加到队列中,并在UI线程中运行。这是什么意思?Android - postDelayed和线程问题

因此,例如,我用来创建我的布局的同一个线程用于运行Runnable?

如果我希望它作为一个独立的线程执行,而我正在创建我的布局并定义我的活动,该怎么办?

感谢 克里斯

回答

1

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

  1. 处理程序和PostDelayed可以是定期调用前台活动的很好的轻量级方法。即使这些消息被重用。这些用于Snake示例程序(Snake/SnakeView.java/sleep())以使蛇移动。它以'发送消息延迟500ms'的方式运行,在500毫秒内将其捕获到HandleMessage(处理程序的默认值),移动,然后再发送它。即使这个消息是通过acquireMessage()重用的。我已经使用这些按钮进行按钮更新,同时按下它。

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

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

  4. 调查更多的意图启动不同的场景。我发现把你的'创建和启动意图'分成不同的功能有助于维护和调试。

祝你好运!

3

是将在UI线程上运行。

如果你想运行一个后台线程,然后按照正常的方式。

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

但是如果你想在所有的改变反应的东西,一个后台线程可能会做的UI,那么你可以使用postDelayed()。

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