2011-12-03 3 views
2

나는 사전 실행에서 로딩 바를 시작하고, 백그라운드에서 서버로 무언가를 보내고, 실행 후 대화 상자를 닫고 버튼을 활성화하는 asyncTask을 가지고있다. 그러나 null을 반환하는 doInBackground로 인해 내 게시물 실행이 실행되지 않습니다. postExecute를 실행하려면 무엇을 할 수 있는지 알아 내려고합니다. 어떤 아이디어? 감사안드로이드 - 포스트에 AsyncTask에서 실행

코드 :

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"); 
     } 

    } 

답변

5

귀하의 경우 doInBackground()에서 null를 반환 할 완전히 확인합니다. 그냥 확인 onPostExecute을()은 다음과 같습니다 : 당신의 DatabaseAsync 클래스 같은

@Override 
protected void onPostExecute(Void result) { 
    Log.d(TAG, "p execute"); 
    dialog.dismiss(); 
    sendButton.setEnabled(true); 
    Log.d(TAG, "done executing"); 
} 
+2

http://www.vogella.de/articles/AndroidPerformance/article.html 그냥 명확하게 작동 후

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"); } 

이 링크를 참조하십시오. onPostExecute가 호출되지 않는 이유는 DatabaseAsync 클래스에서 전혀 구현되지 않았기 때문입니다. 대신 저자는 0 인수로 DatabaseAsync에서 메서드를 구현했습니다. 이것은 완전히 다른 오버로드 된 방법으로 간주되기 때문에 물론 실행되지 않습니다. http://developer.android.com/reference/android/os/AsyncTask.html#onPostExecute(Result)에서 JavaDoc을 살펴보십시오 –

+0

도움을 많이 주셔서 감사합니다. Arhimed, 정말 고맙습니다. – Splitusa

0

변화 : 코드

관련 문제