3

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

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

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

谢谢克里斯

4

2 回答 2

3

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

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

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

但是,如果您想完全更改 UI 以响应后台线程可能执行的操作,那么您可以使用 postDelayed()。

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

于 2010-06-03T19:44:03.787 回答
1

恭喜!您找到了不止一种解决方案的地方之一。

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

  2. 线程有点重。您可以将这些用于后台或您已经习惯于运行线程的地方。制作一个“新线程(aRunnable).start()”。我在 Android 上用的不多。

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

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

祝你好运!

于 2010-06-03T23:15:29.197 回答