2012-06-25 87 views
1

我的遊戲需要很長時間從後臺加載。在加載期間,屏幕是黑色的(約5-7秒,所以用戶可能會認爲它崩潰)。如何顯示吐司沒有完成加載上下文

我決定在進入前景時顯示敬酒。

protected void onResume() { 

     System.out.println("onResume method called"); 
     Context context = getBaseContext(); 
//  Context context = getApplicationContext(); 
     CharSequence text = "i appreciate your patience"; 

     Toast toast = Toast.makeText(context, text, Toast.LENGTH_LONG); 

     toast.show(); 


     super.onResume(); 
     wl.acquire(); 
     if (accelerometerEnabled) { 
      accelerometer.enable(); 
     } 
    } 

但敬酒顯示出來後,才完成恢復(這使得它沒用) 我試過getApplicationContext,getBaseContext以及活動本身。 所以有可能在沒有我的應用程序上下文的情況下直接在窗口上添加烤麪包? (也許在系統級上下文)

回答

2

我認爲,當它來自背景

嘗試將所有非UI線程依賴的邏輯組合成的AsyncTask回報,這是關係到UI線程上你的遊戲加載。

這應該允許您的祝詞消息在加載遊戲時可見。

+0

我可以把敬酒asynctask(以及如何?),而不是?我不認爲有可能把我的遊戲邏輯放在那裏。當進入前景時,我基本上只是恢復OpenGL視圖。 – OMGPOP

+0

你應該從UI線程調用你的麪包,所以它不應該進入異步任務。 至於重新啓動OpenGL視圖,您應該有一個渲染狀態,等待您的遊戲數據異步加載。換句話說,當遊戲重新開始時,會出現一個真正輕的「加載」屏幕,並在另一個線程中啓動所有預處理。預處理完成後,恢復渲染。 你得到滯後的原因是因爲當你離開後臺時你的表面被重新創建,並且你正試圖在UI線程上重建你的邏輯。 – WindyB

1

這是啓動屏幕可能有用的地方。只需在xml中放置一個覆蓋所有UI的啓動畫面,然後以asynctask開始加載過程。在asynctask的onPostExecute上,將飛濺佈局的可見性設置爲Gone。

不要忘記處理方向更改。