Диалог прогресса Android при получении данных из sqlite - PullRequest
1 голос
/ 20 сентября 2011

Я пытался реализовать потоки, асинхронные задания из примеров в Интернете, но ни один из них не работает так, как я хочу.

У меня есть класс для отправки данных на веб-сервер.Он содержит 3 задачи: -приобрать идентификатор -получить данные из sql и создать файл json -отправить файл json

Я хотел бы реализовать диалоговое окно прогресса или индикатор выполнения, чтобы показать прогресс ожидающему пользователя.

Progressdialog, который я последний раз тестировал, чтобы показать захват данных из sqlite, был основан на Progress Bar Example .Проблема в том, что когда я пытаюсь сгенерировать свой файл более 2 раз, поток не запускается ...

Так что лучше всего сделать в моем случае?У меня есть счетчик, чтобы выбрать, что отправлять, и кнопку для отправки.

При нажатии кнопки, в основном, у меня есть:

HttpResponse response = GetChantier(commentaire);
    //Checking response 
    if( response != null)
    {
        String _response=EntityUtils.toString(response.getEntity());
        int chantier_serveur = Integer.parseInt(_response.replaceAll("[\n\r]", ""))
        String fichier = DonneesToJson(db,chantier, chantier_serveur);
        HttpResponse response = SendJson ( chantier, fichier);
    }

Мне нужно реализовать прогресс для DonneesToJson иSendJson.

DonnesToJson захватывает курсор, а затем создает файл json, повторяя курсор.SendJson - это HttpPost, который отправляет файл и 2 поля.

Я действительно новичок в программировании и потоках Java.Любая помощь приветствуется.

С уважением.

1 Ответ

1 голос
/ 20 сентября 2011

Используйте асинхронную задачу для выполнения фоновой задачи следующим образом.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    new Asyn_Task().execute("name","title");
}


class Asyn_Task extends AsyncTask<Void, Void, Void> {
    private final ProgressDialog dialog = new ProgressDialog(Facebook_Post_View.this);
    // can use UI thread here
    protected void onPreExecute() {
        this.dialog.setMessage("Loading...");
        this.dialog.setCancelable(false);
        this.dialog.show();
    }
    @Override
    protected Void doInBackground(String... param) {
        // TODO Auto-generated method stub
                    name=params[0]; //Like
                    title=params[1];

         // Do your all Stuffs
       return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }
    }
}

В них в позиции 0 будет доступно имя, а в позиции 1 будет доступно название. Точно так же вы можете передавать значения, как вам нравится ..

Для дальнейшего ознакомления проверьте это Async Task

...