各タブに 1 つずつTabActivity
、4 つの個別の を使用しています。Activities
の 1 つはActivities
、ListView
カスタム を持つArrayAdapter
です。
問題は、Tab を押してこのビューに変更すると、ビューが変更される前にコンテンツが読み込まれ、読み込まれて解析されるActivity
まで数秒間何も起こらないように見えることです。xml
例を探しましたが、これは私の最初の Android アプリケーションであり、フローを理解するのに苦労しています。
バックグラウンドスレッドでコンテンツを読み込んでいるときに、ビューを即座に変更できるコードを教えてください (ユーザーコンテンツが読み込まれていることを通知できます)
ありがとうございました
編集 - 既存の iOS アプリからコードを移植しています - この状況で UI スレッドがどのようにブロックされるかを理解していなかったため、また既存のコードの複雑さと、締め切り あまり構造を変えたくありませんでした。
あなたのコード Jennifer を見る前に問題を絞り込みましたが、それは私が使用した解決策なので、あなたのものを正しいとマークします。
これが他の人に役立つ場合に使用したものです。データロードをトリガーするために呼び出した関数をバックグラウンドスレッドに配置し、そのスレッドが作業を完了したときにコンテンツを表示する必要がありました
このクラスは私の中で宣言されました
public class TableView extends ListActivity
これまでにこれをやったことがなかったので、頭を悩ませるのは難しかったです;)
public class GetContentTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog pdialog;
@Override
protected void onPreExecute(){
super.onPreExecute();
pdialog = new ProgressDialog(TableView.this);
pdialog.setTitle(progressDialogTitle);
pdialog.setMessage(progressDialogMessage);
pdialog.show();
}
@Override
protected void onPostExecute(Void result){
super.onPostExecute(result);
setUpAndLoadList(); // the function to display the list and fill it with content
pdialog.dismiss();
}
@Override
protected Void doInBackground(Void... params) {
doInitialLoad(); // The function to load any xml data from server
return null;
}
}