我对postDelayed有疑问。 android文档说它将runnable添加到队列中,并在UI线程中运行。这是什么意思?
那么,例如,我用来创建布局的相同线程用于运行Runnable?
如果我想将它作为在创建布局和定义活动时执行的独立线程怎么办?
由于 克里斯
答案 0 :(得分:3)
是的,它将在UI线程上运行。
如果要运行后台线程,请按正常方式执行。
Thread t = new Thread(new Runnable(){});
t.start()
但是如果你想根据后台线程可能做的事情来改变UI,那么你可以使用postDelayed()。
UI的任何更改都必须在主UI线程上完成。
答案 1 :(得分:1)
恭喜!你找到了一个有多个解决方案的地方。
处理程序和PostDelayed可以很好地轻量级地定期调用前台活动。甚至消息也被重用。这些用于Snake示例程序(Snake / SnakeView.java / sleep())以使蛇移动。它运行为“发布延迟500毫秒的消息”,在500毫秒内捕获它在HandleMessage(Handlers的默认值),移动,然后再次发送。甚至消息也会与obtainMessage()一起重用。我已经使用它们在按下按钮时进行按钮更新。
线程有点重。您可以将这些用于后台或已用于运行线程的位置。制作一个'新线程(aRunnable).start()'。我没有在Android上使用它们。
使用StartActivityForResult()启动Intent并使用OnActivityResult捕获结果以生成标准RPC。有关详细信息,请参阅记事本示例的步骤2.
查看针对不同场景启动的更多Intent。我发现将“创建和启动意图”放入单独的功能有助于维护和调试。