ProgressDialog не показывать в активности
Я пишу приложение для 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
, Я думаю, что если я буду использовать его здесь, произойдет столкновение потоков.
Любая идея?
2 ответа
Вы должны сделать свою работу (все в то же время) в другом потоке. Теперь все в основном потоке, который объясняет, что вы видите
Пожалуйста, используйте обратные вызовы, когда асинктическая задача будет завершена (CallAPI.sendPut).