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 について
申し訳ありませんが、私の英語は下手です。)))