問題は、実行されているすべての作業と同じスレッドでスプラッシュ画面(ProgressDialogなどのある種のダイアログ)を実行している可能性があります。これにより、スプラッシュ画面のビューが更新されなくなり、画面に表示されないようにすることができます。スプラッシュ画面を表示し、AsyncTaskのインスタンスを開始してすべてのデータをダウンロードし、タスクが完了したらスプラッシュ画面を非表示にする必要があります。
したがって、アクティビティのonCreate()メソッドは、ProgressDialogを作成して表示するだけです。次に、AsyncTaskを作成して開始します。AsyncTaskをメインアクティビティの内部クラスにして、ダウンロードしたデータをアクティビティの変数に格納し、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);
this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);
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");
return "replace this with your data object";
}
protected void onPostExecute(Object result) {
MyActivity.this.data = result;
if (MyActivity.this.pd != null) {
MyActivity.this.pd.dismiss();
}
}
}
}
明らかに、そこに入力する必要のある部分がいくつかありますが、このコードは実行され、良い出発点になるはずです(コードエラーがある場合はご容赦ください。これを入力しているため、AndroidSDKにアクセスできません。現在)。
AndroidのAsyncTasksに関するいくつかのより良い読み物は、こことここにあります。