我目前正在尝试在构建视图期间实现初始化线程,以避免当UI线程被绑定太久时android发出的“无响应”消息 - 而初始化线程仍在工作UI线程将显示简单的加载消息并响应方向更改等,并且当初始化线程完成时,UI线程将使用初始化线程初始化的资源重新生成视图。虽然我已经实现了一个volatile布尔值,以便两个线程能够传达初始化过程的当前状态,但我不确定是否有必要将所有初始化资源定义为volatile,因为它们不会被同时访问两个线程。初始化线程终止后,初始化线程初始化的对象/变量是否对UI线程可见?
非常感谢任何建议。
答案 0 :(得分:0)
这取决于你如何使用volatile boolean。它确实建立了一个先发生过的关系,因此:
volatile boolean done;
...
doStuff();
done = true;
如果在另一个帖子中看到done = true
更改,则之前(doStuff()
中)所做的更改也会保证可见。