我正在使用Unity游戏引擎,它也支持导出到Android。
引擎使用多个线程,包括UI线程和一个单独的脚本线程,其中所有用户自定义代码都在执行。
我的场景要求我在后台线程中调用一些操作,并且我想将结果编组回主脚本线程。
我了解AsyncTask,Executor和Looper类的基础知识。其中,Looper似乎是一个很好的候选者,因为它允许设置队列并将消息回发给给定的线程(AsyncTask是"硬连线"在UI线程上运行回调,这不是我的想要在这里。)
实现这一目标的正确方法是什么?
答案 0 :(得分:1)
与UI线程进行通信有三种主要方式:
在您的情况下,我建议您创建一个Handler
,因为前两个解决方案暗示您对Activity
或View
修改强>
如果您想在应用中使用任何主题,只需确保已设置Looper
,并使用关联的Handler
class YourLooperThread extends Thread
{
// make it accessible from the outside
private Handler handler;
@Override public void run()
{
Looper.prepare();
// Customize your handler, it has to be used in any thread which want to push a message in this thread's looper message Queue
handler = new Handler();
Looper.loop();
}
}
小心:您要在该线程中执行的所有其他任务必须通过消息队列完成,即在处理程序中发布runnable。更多信息请访问:Handlers, MessageQueue, Looper, do they all run on the UI thread?