【发布时间】:2016-08-29 09:12:37
【问题描述】:
大家好,我有一个异步任务,我从网上获得积分,根据这些积分,我必须决定我应该在主线程上显示哪个弹出窗口。例如,如果点数较少,我应该显示“购买点数”屏幕,否则显示“购买项目”屏幕。我还想显示进度对话框,直到加载点数
如果我这样做,主线程会停止,直到加载点但不会显示进度对话框
String str_result= new Jsontask().execute("my url" + uid).get();
如果我执行此进度对话框,但加载的点数是错误的
new Jsontask().execute("my url" + uid);
我的异步任务
class Jsontask extends AsyncTask<String, String, String> {
ProgressDialog pdia;
@Override
protected void onPreExecute() {
super.onPreExecute();
pdia = new ProgressDialog(PopupActivity.this);
pdia.setMessage("Loading...");
pdia.show();
}
@Override
protected String doInBackground(String... params) {
// get my points here
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
System.out.println(result);
setRewardpoints(Integer.parseInt(result));
pdia.dismiss();
}
}
如何在异步任务完成之前显示进度对话框并停止执行主线程?
【问题讨论】:
-
为什么要停止主线程?你不应该.. 用 ProgressDialog 锁定 UI 就足够了
-
我想停下来直到异步任务完成,这样我才能得到正确的分数并启动正确的弹出窗口
-
为什么在关闭 pdia 后不在 pnPostExecute 中显示进度对话框?
-
你不想停止主线程,否则你的应用程序将被关闭。您必须使用 onPostExecute 方法来显示新的进度对话框或查看 onProgressUpdate 方法。
-
启动异步任务后,我检查主线程上的点的条件并启动弹出窗口,点加载异步任务大约需要 6-7 秒,所以我想等待这 6 个-7 秒,所以加载的点数是正确的,我想显示这 6-7 秒的进度对话框,还有其他方法吗?
标签: android android-asynctask progressdialog