私のデータはインターネットからロードされるので、AsynTask()を使用します。execute()メソッドを使用して、最初にprogressDialogを開き、次にバックグラウンドでデータをロードします。動作しますが、データの読み込みに時間がかかりすぎるため、読み込みをキャンセルしたい場合があります。これが問題です。戻るボタンをクリックするとダイアログが閉じますが、バックグラウンドでの読み込みが完了すると、何でも実行を開始します。ロード後に行うことになっています。たとえば、新しいインテントを開始します。読み込みを正しくキャンセルする方法はありますか?
new GridViewAsyncTask().execute();
public class GridViewAsyncTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog myDialog;
@Override
protected void onPreExecute() {
// show your dialog here
myDialog = ProgressDialog.show(ScrollingTab.this, "Checking data",
"Please wait...", true, true);
}
@Override
protected Void doInBackground(Void... params) {
// update your DB - it will run in a different thread
loadingData();
return null;
}
@Override
protected void onPostExecute(Void result) {
// hide your dialog here
myDialog.dismiss();
}