Android - на пост выполнить в AsyncTask - PullRequest
3 голосов
/ 03 декабря 2011

В настоящее время у меня есть asyncTask, который при предварительном выполнении начинает полосу загрузки, в фоновом режиме отправляет что-то на сервер, а при выполнении после запуска закрывает диалоговое окно и включает кнопку. Однако, мой пост не выполняется из-за того, что doInBackground возвращает ноль. Я пытаюсь выяснить, что я могу сделать, чтобы запустить postExecute. есть идеи? спасибо

код:

class DatabaseAsync extends AsyncTask<Void,Void,Void>{
        @Override
        protected void onPreExecute(){
            dialog = ProgressDialog.show(MainFeedActivity.this, null, "Posting...");
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            Log.d(TAG, "send to databse");
            SendToDatabase();
            Log.d(TAG, "sent to database - DONE");

            //dialog.dismiss();

            //sendButton.setEnabled(true);

            return null;
        }

        protected void onPostExecute(){
            Log.d(TAG, "p execute");
            dialog.dismiss();
            sendButton.setEnabled(true);
            Log.d(TAG, "done executing");
        }

    }

Ответы [ 2 ]

5 голосов
/ 03 декабря 2011

Полностью нормально вернуть null из doInBackground() в вашем случае. Просто убедитесь, что onPostExecute () выглядит так:

@Override
protected void onPostExecute(Void result) {
    Log.d(TAG, "p execute");
    dialog.dismiss();
    sendButton.setEnabled(true);
    Log.d(TAG, "done executing");
}
0 голосов
/ 03 декабря 2011

измените свой класс DatabaseAsync следующим образом:

class DatabaseAsync extends AsyncTask<String, Void, String>{

        protected void onPreExecute(){
              dialog = ProgressDialog.show(MainFeedActivity.this, null, "Posting...");
        }


        protected String doInBackground(String... arg0) {
            Log.d("TAG", "send to databse");

            Log.d("", "sent to database - DONE");


            //dialog.dismiss();

            //sendButton.setEnabled(true);

            return null;
        }

        protected void onPostExecute(String result){
            Log.d("TAG", "p execute");
            dialog.dismiss();

            Log.d("TAG", "done executing");
        }

прочитайте эту ссылку после того, как код заработает http://www.vogella.de/articles/AndroidPerformance/article.html

...