如何在没有冻结UI的情况下使用加载屏幕正确暂停主线程直到满足条件,

问题描述 投票:-1回答:1

你好stackoverflow并提前谢谢你。

我正在尝试加载一个加载菜单,直到线程已经填充了一个至少大小为5的数组,但UI冻结了。

我有一个“新游戏”按钮,当用户点击它时,创建一个线程,这个线程负责填充一个数组,这个线程在后台工作正常。

同时在主线程中,我试图在用户点击“新游戏”按钮时显示一个带有“加载”动画的加载菜单。我想要显示这个菜单,直到(Array.size <5),然后才开始

gameLayout.setVisibility(view.VISIBLE);

我知道这是最可怕的解决方案,但我必须这样做以防止崩溃,直到我弄清楚如何正确地做到这一点。加载屏幕开始“可见”并在可见之前立即停止,因为UI冻结。

loadingLayout.setVisibility(view.VISIBLE)
while(Array.size < 5)
{

}
loadingLayout.setVisibility(view.INVISIBLE)
gameLayout.setVisibility(view.VISIBLE) 

什么是最好的方法呢?

java android multithreading
1个回答
2
投票

如何正确暂停主线程。

你没有。永远不应该阻止主线程(也称为UI线程)。

你说你有你的背景工作。条件应该作为工作的一部分在后台线程上计算,并且一旦遇到任何结果传递回UI线程。

© www.soinside.com 2019 - 2024. All rights reserved.