私の期待する結果は、最初の起動時に、バックグラウンドスレッドがコンテンツをロードするのを待つ進行状況ダイアログが表示されることです。ワーカースレッドがジョブを完了すると、ダイアログは閉じます。私は検索してこの解決策を手に入れましたAndroidでアクティビティを開始する前に進行状況ダイアログを表示するにはどうすればよいですか?
これは私の完全なコードです:
private ManagerApplication app;
private ImageAdapter adapter;
private GridView gridview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setupView();
}
private void setupView() {
gridview = (GridView) findViewById(R.id.gridview);
app = (ManagerApplication) getApplication();
ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
new LoadImageTask(progress, this).execute();
}
private class LoadImageTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog progress;
private Context context;
public LoadImageTask(ProgressDialog progress, Context context) {
this.progress = progress;
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progress.show();
}
@Override
protected Void doInBackground(Void... params) {
adapter = new ImageAdapter(app.getShoes(), context);
gridview.setAdapter(adapter);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
progress.dismiss();
}
}
ただし、「ビュー階層を作成した元のスレッドのみがビューにアクセスできる」という理由で、アプリケーションがクラッシュします。メインUIスレッドをブロックしているものがあると思いますが、それでも非常に不明です。それで、誰かが私に問題を指摘することができますか?ありがとう