【发布时间】:2015-12-14 10:55:56
【问题描述】:
我正在编写一个 Android 应用程序。在我的一项活动中,我调用了方法updateAPI(),它将数据从数据库更新到服务器。
这是我的方法的代码:
private void updateAPI(){
boolean stop = false;
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Updating...");
progressDialog.show();
progressDialog.setCancelable(false);
ApplicationInfo applicationInfo = null;
while(!stop){
List<ApplicationKeyId> list = MyApplication.getApplicationId_updated(false);
if (list != null) {
ApplicationInformation appInfo = MyApplication.getApplicationInformation(app.getPackageName());
try {
applicationInfo = pm.getApplicationInfo(app.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
String appName = (pm.getApplicationLabel(applicationInfo) == null) ? app.getApplicationName() : (String) pm.getApplicationLabel(applicationInfo);
List<UsedApplication> listUsa = appInfo.getApplicationToUsedApp();
for (UsedApplication usa : listUsa) {
if (DateUnit.compare2Days(usa.getDate(), app.getDate())) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(usa.getDate().getTime()));
String dateApp = cal.get(Calendar.DAY_OF_MONTH) + "-" + DateUnit.MonthtoString(cal.get(Calendar.MONTH)) + "-" + cal.get(Calendar.YEAR);
Map<String, String> datamap = new HashMap<String, String>();
String results = dateApp + "_" + usa.getTime();
datamap.put("dataKey", appName);
datamap.put("dataValue", results);
datamap.put("company", "Privowny");
datamap.put("encrypt", String.valueOf(false));
if (app.getKeyId() == null) CallAPI.sendPost(datamap);
else CallAPI.sendPut(datamap, app.getKeyId());
}
}
}
stop = true;
}
}
if(stop) progressDialog.dismiss();
}
如果有很多数据线需要更新,我想显示progressDialog 告诉用户等待。
我尝试在方法中使用progressDialog,但它没有出现。
在这里,我不能使用 AsynTask 类,因为在我的方法中,类 CallAPI.sendPut (CallAPI.sendPost) 已经使用了 Asyntask。我想如果我在这里使用它,会发生线程冲突。
有什么想法吗?
【问题讨论】:
-
你确定你的方法正在执行并且变量 stop 是假的吗? , 这一行 if(stop) progressDialog.dismiss();导致进度对话框消失!
-
嗨 Elenasys,我通过添加日志检查了我的代码并调用了我的方法。在方法开始时,我设置了 stop=false,在将数据发布或放入服务器后,将其设置为 true,以便可以关闭 progressDialog。
标签: android android-asynctask android-progressbar