2010-12-02 7 views
0

나는 핸들러를 매개 변수로 사용하고 doBackground에서 HandlersendEmptyMessage (0)를 보내는 동안 간단한 ProgressDialoge로드 뷰를로드하는 간단한 AsyncTask 클래스를 개발했지만 어떤 이유로 든 끝까지 표시하지 않습니다. 내 Handler 객체 안에있는 내용을 실행하는 것입니다 (즉, progressDialogue가 끝에 깜박임). 여기 안드로이드 진행 dialoge보기가 보이지 않는다

내 AsyncTask를하다 :

package com.kc.util; 

import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.os.Handler; 
import android.util.Log; 

public class LoadDialoge extends AsyncTask<Handler, Integer, Void> { 

    private ProgressDialog progressDialog; 
    private String TAG = "LoadDialoge"; 
    private Context mContext; 

    @Override 
    protected void onPostExecute(Void result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     progressDialog.dismiss(); 
    } 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
     showWait(); 
    } 

    @Override 
    protected Void doInBackground(Handler... params) { 
     // TODO Auto-generated method stub 
     for(Handler mHandler : params){ 
      mHandler.sendEmptyMessage(0); 
      Log.d(TAG, "handler sending message"); 
     } 
     return null; 
    } 

    private void showWait() { 
     Log.d(TAG, "showWait"); 
     progressDialog = new ProgressDialog(mContext); 
     progressDialog.setTitle("Retrieving contact details"); 
     progressDialog.setMessage("Please wait..."); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progressDialog.show(); 
     Log.d(TAG, " "); 
    } 

    public void setmContext(Context mContext) { 
     this.mContext = mContext; 
    } 



} 

그리고 여기에 내가 활동에서이 클래스에 전달 된 핸들러 :

private Handler mHandler = new Handler() { 

     @Override 
     public void handleMessage(Message msg) { 
      // TODO Auto-generated method stub 
      super.handleMessage(msg); 
      Log.d(TAG, "handleMessage"); 
      initialiseOnItemClickListeners(); 
      initialiseOnClickListeners(); 
      initialiseListViewAdapters(); 
      loadDataToDb(); 
      initializeTitles(); 
      initialize(); 
     } 

    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.abstract_main_menu); 

     LoadDialoge load = new LoadDialoge(); 
     load.setmContext(this); 
     load.execute(mHandler); 

    } 

임 어떤에서 작동하는 일반 비동기로드 화면을 만들려고 액티비티 (위의 LoadDialogue AsyncTask를 복사하여 붙여 넣기 대신에 사용하기를 원합니다.

답변

1

놀랍지도 않지만 "깜박"합니까? doInBackground()은 거의 아무 것도하지 않습니다 ... 작업이 즉시 완료됩니다. 실제로 처리 중이거나 백그라운드 작업을 기다리고있는 것처럼 위조하고 싶다면 sendEmptyMessage() 대신 sendEmptyMessageDelayed()을 사용해보십시오.

관련 문제