0

AsyncTask を含む外部クラスを使用して、サーバーからデータを取得します。

public class GetTask extends AsyncTask<String, Void, JSONObject> {

    private Context context;
    ProgressDialog dialog;

    public GetTask(Context cxt) {
        context = cxt;
        dialog = new ProgressDialog(context);
    }

    protected void onPreExecute() {
        dialog.setTitle("Load...");
        dialog.setMessage("Data...");
        dialog.show();

        super.onPreExecute();
    }

    @Override
    protected JSONObject doInBackground(String... url) {

        // code for retreive data
        return jArray;

    }

    protected void onPostExecute(JSONObject object) {
        dialog.dismiss();
        super.onPostExecute(object);
    }
}

アクティビティからこのタスクを呼び出します。

Tasks task = new Tasks();
JSONObject json = task.new GetTask(this).execute(ServerURL).get();

私のデータは正常に取得されましたが、ProgressDialog は super.onPostExecute(object); の後に表示されます。方法、なぜ?

PS ダイアログは次の後に表示されます:

    // Make sure the identity of this thread is that of the local process,
    // and keep track of what that identity token actually is.
    Binder.clearCallingIdentity();
    final long ident = Binder.clearCallingIdentity();

内部 Looper.class について

申し訳ありませんが、私の英語は下手です。)))

4

1 に答える 1