Как получить диалог прогресса, пока не получит ответ от сервиса в Android? - PullRequest
1 голос
/ 05 марта 2012

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

 textView1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
waitProgreess = ProgressDialog.show(ShoutGetMsgsScreen.this, "Please wait", "Loading...");
 resultFromService = new ParseXml().convertMessages(new Model().getMessages("0"));
lst.setAdapter(new CustomeAdapter(ShoutGetMsgsScreen.this, resultShoutMessage));

    if(resultFromService .size()>5){

                    waitProgreess.dismiss();
                }
   }
        }); 

из вышеприведенной реализации, как я могу показать диалоговое окно прогресса, и когда представление обновляется, то как я могу закрыть диалоговое окно прогресса?

пожалуйста, любое тело, помогите мне ...

Ответы [ 4 ]

1 голос
/ 05 марта 2012
private class GetDATA extends AsyncTask<Void, Void, Void>
{
    ProgressDialog pd;
    @Override
    protected void onPreExecute() {
        pd = ProgressDialog.show(Activity.this, "", getString("loding..."), true, false);
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... params) {


resultFromService = new ParseXml().convertMessages(new Model().getMessages("0"));
return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        if (pd != null && pd.isShowing())
            pd.dismiss();
        }

lst.setAdapter(new CustomeAdapter(ShoutGetMsgsScreen.this, resultShoutMessage));

    }
}

звоните так: -

(new GetDATA()).execute();
1 голос
/ 05 марта 2012

Android - AsyncTask для этой цели. Просто взгляните на какой-нибудь базовый урок. Его имеют onPreExecute(), doInBackground() и onPostExecute() для тех же потребностей.

0 голосов
/ 05 марта 2012

Проверьте эту ссылку для некоторых, чтобы получить представление о Handlers / AsyncTasks, здесь также есть несколько примеров: http://www.vogella.de/articles/AndroidPerformance/article.html#concurrency_handler

0 голосов
/ 05 марта 2012

У вас есть два варианта сделать это.

  1. Handeler

    Обработчик имеет метод callBack, то есть handleMessage ().

  2. AsyncTask

    AsyncTask имеет три метода обратного вызова onPreExecute (), doInBackground () и onPostExecute ()

Вы можете выбрать любой из этих.

...