2012-04-09 86 views
0

我無法將此問題納入搜索條件。我正在開發Android應用程序,特別是我的應用程序的啓動畫面。應用程序需要從外部Web服務(阻塞函數調用)獲取數據,而用戶可以獲得一個不錯的標題,圖像和進度條。當數據到達時,用戶被重定向到主菜單。它是一個簡單的屏幕,一切都在xml佈局文件中定義,我的問題是,我只是幾秒鐘後黑屏,然後是主菜單。如果我按回來,我會看到啓動畫面,進度條愉快地旋轉。Android開發者:Android佈局未及時繪製

這是我到目前爲止有:

public class SplashActivity extends Activity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
    } 

    @Override 
    public void onStart(){ 
     super.onStart(); 
     DatabaseManager db = new DatabaseManager(this.getBaseContext()); 
     db.fetchExternCatalog(); //doesnt return until data arrives 
     Intent intent = new Intent().setClass(this, MainMenuActivity.class); 
     startActivity(intent); 
    } 
} 

看來(之後的onCreate(),在onStart()等)的屏幕心不是實際繪製,直到活動正在運行。我認爲onStart()將是完美的地方,但顯然不是。

那麼如何在屏幕上繪製所有內容,並在用戶在下載數據時實際看到啓動畫面後調用阻塞函數?

+0

看起來像我找到了答案,以我自己的問題,應該有看了看一邊的相關名單發佈前(仍是那種新來的哈):HTTP://計算器。 com/questions/1979524/android-splashscreen,做了訣竅 – macgregor 2012-04-09 18:40:03

回答

0

你會在UI線程這就是爲什麼我相信你看到一個黑人被鎖起來屏幕。使用AsyncTask或爲數據庫操作創建您自己的線程池。

只要點擊後退按鈕並查看舊的活動,您需要告訴android不要將活動存儲在堆棧中。這應有助於:

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

+0

這就是我最終做的,即將要在後退按鈕部分。我看看那個鏈接,謝謝。 – macgregor 2012-04-09 18:41:21

0

您需要使用ProgressDialog類來構建對話框,然後在線程中運行阻塞方法。

我會在一分鐘後一個例子(得讓一臺PC附近:P)

private void showSplash(){ 

    progressDialog = ProgressDialog.show(this, "Hello! ima title", "Im the message you see."); 
    progressDialog.show(); 

    Thread t = new Thread(new Runnable(){     
     public void run(){ 
      // Put your blocking method here. 
      // You may need to build in a "hey, im done downloading" variable to get it to close down right 
    progressDialog.dismiss(); 
    } 
}); 
t.start(); 
} 
+0

你可以添加圖片嗎?什麼不是ProgressDialog的?我假設你可以創建自己的子類,但這看起來像是一個簡單的啓動畫面,而不是必要的工作。 – macgregor 2012-04-09 18:44:43

+0

你應該可以通過setContentView()添加圖片(我從來沒有嘗試過)我相信你只需要刪除消息部分,所以它不會與內容發生衝突。 – z3nful 2012-04-09 18:48:03

+0

我以後可能會嘗試,可以節省一些資源開銷,創建一個單獨的活動將導致 – macgregor 2012-04-09 18:53:08