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).

Другие вопросы по тегам