簡體   English   中英

如何在不凍結UI的情況下通過加載屏幕正確暫停主線程,直到滿足條件為止,

[英]How to properly pause the main thread with a loading screen without freezing UI until condition is met,

您好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) 

最好的方法是什么?

如何正確暫停主線程。

你不 主線程(也稱為UI線程)永遠不應被阻塞。

您說您已經做好了背景工作。 條件應作為工作的一部分在后台線程上計算,一旦滿足,任何結果都將傳遞回UI線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM