的問題是最有可能的,你是在同一個線程中所有正在運行的啓動畫面(某種Dialog如ProgressDialog我假設)正在完成的工作。這將保持啓動畫面的視圖不被更新,這可以防止它被顯示在屏幕上。您需要顯示啓動畫面,啓動AsyncTask的實例以下載所有數據,然後在任務完成後隱藏啓動畫面。
所以你的Activity的onCreate()方法只會創建一個ProgressDialog並顯示它。然後創建AsyncTask並啓動它。我將使AsyncTask成爲主Activity的內部類,因此它可以將已下載的數據存儲到Activity中的某個變量,並在其onPostExecute()方法中關閉ProgressDialog。
不知道如何了闡述,而不只是顯示的代碼,所以這裏是:
public class MyActivity extends Activity {
private ProgressDialog pd = null;
private Object data = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Show the ProgressDialog on this thread
this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);
// Start a new thread that will download all the data
new DownloadTask().execute("Any parameters my download task needs here");
}
private class DownloadTask extends AsyncTask<String, Void, Object> {
protected Object doInBackground(String... args) {
Log.i("MyApp", "Background thread starting");
// This is where you would do all the work of downloading your data
return "replace this with your data object";
}
protected void onPostExecute(Object result) {
// Pass the result data back to the main activity
MyActivity.this.data = result;
if (MyActivity.this.pd != null) {
MyActivity.this.pd.dismiss();
}
}
}
}
顯然有一些您需要填寫在那裏片,但是這個代碼應該運行,給你一個很好的起始點(如果有代碼錯誤,請原諒我,因爲我現在正在輸入此信息,所以無法訪問Android SDK)。
關於Android中的AsyncTasks的主題可以找到一些更好的閱讀here和here。
任何人能解釋Ÿ甚至一個進度條沒有加載,即使我嘗試在主列表的OnCreate函數中創建並啓動它...並在我的過程結束後關閉它...即使這不起作用...我的意思是有一個ny默認的方法,我需要遵循...就像在OnStart()中啓動進度條或者什麼? – JaVadid 2009-12-30 11:11:21
你嘗試了什麼接受的答案在http://stackoverflow.com/questions/2222890/how-to-make-a-splash-screen-screen-visible-when-app-starts說?編輯:好吧,接受的答案是有點相同.. – noloman 2011-08-03 19:37:06
看看這個http://www.gadgetsaint.com/android/create-video-splash-screen-android/ – ASP 2017-01-21 21:44:45