問題は、実行中のすべての作業と同じスレッドでスプラッシュ スクリーン ( ProgressDialogなどのある種のダイアログ) を実行している可能性が最も高いです。これにより、スプラッシュ スクリーンのビューが更新されなくなり、画面に表示されなくなる可能性があります。スプラッシュ スクリーンを表示し、 AsyncTaskのインスタンスを起動してすべてのデータをダウンロードし、タスクが完了したらスプラッシュ スクリーンを非表示にする必要があります。
したがって、Activity の 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);
// 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 に関するその他の優れた資料は、こちらとこちらにあります。