您好stackoverflow,谢谢您。
我正在尝试加载加载菜单,直到线程将数组填充到至少5的大小为止,但是UI冻结。
我有一个“新游戏”按钮,当用户单击它时,将创建一个线程,该线程负责填充Array,该线程在后台运行良好。
同时在主线程中,我试图在用户单击“新游戏”按钮后立即显示带有“正在加载”的漂亮动画的加载菜单。 我希望此菜单显示到(Array.size <5),然后才进行处理
gameLayout.setVisibility(view.VISIBLE);
我知道这是最可怕的解决方案,但是我不得不这样做以防止崩溃,直到我弄清楚如何正确执行它为止。加载屏幕开始“可见”,并由于UI冻结而立即停止显示。
loadingLayout.setVisibility(view.VISIBLE)
while(Array.size < 5)
{
}
loadingLayout.setVisibility(view.INVISIBLE)
gameLayout.setVisibility(view.VISIBLE)
什么是最好的方法?
答案 0 :(得分:2)
如何正确暂停主线程。
您不。主线程(也称为UI线程)永远不应被阻塞。
您说您已经做好了背景工作。条件应作为工作的一部分在后台线程上计算,一旦满足条件,任何结果都将传递回UI线程。