データベースからデータを取得しようとしています。 データがデータベースからロードされている間に、progressDialogを表示します。android - タスクが終了するとProgressDialogが遅すぎる
私はAsyncTaskを拡張するクラスBgClassを使用しています。 preExecuteではダイアログを表示し、postExecuteではダイアログを閉じます。
しかし、データベースからデータが読み込まれた後でもダイアログが表示され、表示されなくなってしまいます。
public class BgClass extends AsyncTask<parameters>{
ProgressDialog dialog;
BgClass(Context context){
dialog = new ProgressDialog(context);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage("Loading ...");
dialog.setIndeterminate(true);
dialog.setCanceledOnTouchOutside(false);
}
@Override
protected doInBackground(parameter) {
//fetching entries from DB
}
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.show();
}
@Override
protected void onPostExecute(parameter) {
super.onPostExecute(ratingBackendlessCollection);
dialog.dismiss();
}
}
PS - 私は正しくコンストラクタと呼ばれ、同じオブジェクトでも実行してきました。
これは、BgClassオブジェクトを呼び出すcallActivityまたはjavaファイルのコードです(無関係のコードが削除されました)。
public class SeeComments extends AppCompatActivity{
//variable initialisation
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.see_comments);
list = new ArrayList<>();
btnLoadMore = new Button(this);
btnLoadMore.setText("Load More");
lv_sc_cmnt.addFooterView(btnLoadMore);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
lv_sc_cmnt.setAdapter(adapter);
context = this;
btnLoadMore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addMoreToList();
}
});
ActionBar ab = getSupportActionBar();
ab.setDisplayHomeAsUpEnabled(true);
}
private void addMoreToList() {
offset+=pageSize;
if (list.size()<totalReviews) {
BgClass bgClass = new BgClass(resAll,pageSize,offset,this);
try {
resAll = bgClass.execute(resAll, null, null).get();
}catch (InterruptedException e){
Toast.makeText(this,e.getMessage(),Toast.LENGTH_LONG).show();
}catch (ExecutionException e){
Toast.makeText(this,e.getMessage(),Toast.LENGTH_LONG).show();
}
// add loaded data to list
adapter.notifyDataSetChanged();
} else {
Toast.makeText(this, "All reviews loaded", Toast.LENGTH_LONG).show();
}
}
}
このAsyncTaskと呼ばれるアクティビティをお手伝いしてください。 –
あなたのタスクが長い操作でなければ、あなたはあなたの 'ProgressDialog'を見ることはできません。あるいは、あなたがテストしているデバイスがより新しい、より速い場合は、タスクはより速く完了します。 – Pztar
このAsyncTaskを呼び出したアクティビティを追加しました。 – Himanshu