2014-06-17 2 views
1

서비스 클래스가있는 android-application이 있고 RestWebService와 통신합니다. 서비스 클래스의 메소드는 AsyncTasks를 사용합니다. AsyncTask를 실행하는 동안 ProgressDialog를 표시하려고합니다. 내 AsyncTask를의 onPreExecute에이 메소드를 호출AsyncTask의 ProgressDialog가 작동하지 않음

private ProgressDialog showProgressDialog(Context ctx) { 
    progressDialog = new ProgressDialog(ctx); 
    progressDialog.setProgressStyle(STYLE_SPINNER); 
    progressDialog.setCancelable(true); 
    progressDialog.show(); 
    return progressDialog; 
} 

:

그러므로 나는 개인 필드

public final class UserService extends Service { 
    private static final String LOG_TAG = UserService.class.getSimpleName(); 
    private static UserService instance = null; 
    private ProgressDialog progressDialog; 

    public static UserService getInstance() { 
     if (instance == null) { 
      instance = new UserService(); 
     } 

     return instance; 
    } 
... 

}

그것은 방법 showProgressDialog (컨텍스트 CTX)에서 인스턴스화되어 있습니다

@Override 
protected void onPreExecute() { 
    progressDialog = showProgressDialog(ctx); 
} 

그리고 onPostExecute에서 닫으십시오.

@Override 
protected void onPostExecute(HttpResponse<User> unused) { 
     Log.v(LOG_TAG, "onPostExecute"); 
     progressDialog.dismiss(); 
} 

로그 명령이 있지만 내 ProgressDialog가 닫히지 않기 때문에 onPostExecute 메서드가 실행됩니다.

내가 뭘 잘못하고 있니?

답장을 보내 주셔서 감사합니다.

+0

서비스 내에서 진행 대화 상자를 표시하고 있습니까? – aromero

답변

0
당신은 당신의 ProgressDialog 제대로표시되지

.

을 보여주는시

전화 : progressdialog.show을하기 전에 당신이 생성자에서해서 ProgressDialog 객체를 초기화했는지 확인

dialog.dismiss(); 
+0

OP의 표시 및 취소 스타일은 무엇이 문제입니까? – Ashwin

1

: 숨어시

private ProgressDialog dialog; 

// store the reference, "this" is the Context 
dialog = ProgressDialog.show(this, "title...", "message..."); 

저장된 참조를 사용 asynctask가 외부 클래스 인 경우 preExecute()를 호출합니다.

관련 문제