如何在android的Asynk任务中使用自定义进度条

如何在android的Asynk任务中使用自定义进度条,android,Android,使用上面的代码,我可以显示自定义进度条,但它设置在指定时间的线程上,但我有下面的asynk任务 public class LoginActivity extends Activity { public static final int DIALOG_LOADING = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstance

使用上面的代码,我可以显示自定义进度条,但它设置在指定时间的线程上,但我有下面的asynk任务

public class LoginActivity extends Activity {

    public static final int DIALOG_LOADING = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        showDialog(DIALOG_LOADING);
        Thread thread =  new Thread(null, doSomeTask);
        thread.start();

    }


    private Runnable doSomeTask = new Runnable() {
        public void run() {
            try {
                //Code of your task
                Thread.sleep(10000);
            } catch (InterruptedException e) {}
            //Done! now continue on the UI thread
            runOnUiThread(taskDone);
        }
    };

    //Since we can't update our UI from a thread this Runnable takes care of that!
    private Runnable taskDone = new Runnable() {
        public void run() {
            dismissDialog(DIALOG_LOADING);
        }
    };



@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DIALOG_LOADING:
                final Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                //here we set layout of progress dialog
                dialog.setContentView(R.layout.custom_progress_dialog);
                dialog.setCancelable(true);
                dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    public void onCancel(DialogInterface dialog) {
                        // TODO Auto-generated method stub

                    }
                });
                return dialog;

            default:
                return null;
        }
    };
类下载扩展了异步任务
{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的空位背景(空位…空位){
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
}
}
我想在这里设置进度条一旦在后台完成,进度条就会消失。请建议我

   class download extends AsyncTask<Void,Void,Void>
{
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... voids) {
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
    }
}
异步任务

Runnable r = new Runnable()
{
@Override
public void run()
{
    // your code here
}
};

 Thread t = new Thread(r);
 t.start();
类下载扩展了异步任务
{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
showDialog(DIALOG_LOADING);//异步任务启动时自定义警报启动
}
@凌驾
受保护的空位背景(空位…空位){
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
dismissDialog(DIALOG_LOADING);//异步任务完成时自定义对话框Dismiss
}
}

使用AsyncTask,您可以在onPreExecute()中显示对话框,在onPostExecute()中下载数据后,您可以取消该对话框。启动下载任务到doInBackground()

公共类下载扩展异步任务{
私人活动;
私有静态最终整数对话框_加载=1;
公众下载(活动){
这个。活动=活动;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//在开始下载任务之前
activity.showDialog(对话框加载);
}
@凌驾
受保护的空位背景(空位…空位){
//在此处启动dowanload任务
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
//下载数据后
activity.dismissDialog(对话框加载);
}
}

你好,我刚刚修改了

public class Download extends AsyncTask<Void,Void,Void>{
    private Activity activity;
    private static final int DIALOG_LOADING = 1;
    public Download(Activity activity){
         this.activity = activity;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // before start download task
        activity.showDialog(DIALOG_LOADING);
    }

    @Override
    protected Void doInBackground(Void... voids) {
         // start dowanload task here
         return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        // after downloaded data
        activity.dismissDialog(DIALOG_LOADING);
    }
}
公共类LoginActivity扩展活动{
公共静态最终整型对话框_加载=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
新下载().execute();
}
类下载扩展了异步任务
{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
showDialog(对话框加载);
}
@凌驾
受保护的空位背景(空位…空位){
//在这里做你的事
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
dismissDialog(对话框\加载);
}
}
@凌驾
受保护的对话框onCreateDialog(int id){
开关(id){
案例对话框\u加载:
最终对话框=新对话框(这个,android.R.style.Theme_半透明);
对话框.requestWindowFeature(窗口.FEATURE\u无\u标题);
//这里我们设置进度对话框的布局
setContentView(R.layout.custom\u progress\u对话框);
对话框。可设置可取消(true);
setOnCancelListener(新的DialogInterface.OnCancelListener(){
public void onCancel(对话框接口对话框){
//TODO自动生成的方法存根
}
});
返回对话框;
违约:
返回null;
}
};
公共类MyAsyncTask扩展了AsyncTask{
私人语境;
私人对话;
公共保存的PatientData(上下文){
this.context=上下文;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=null;
pDialog=新建ProgressDialog(上下文,ProgressDialog.THEME\u HOLO\u LIGHT);
pDialog.setMax(100);
pDialog.setCancelable(假);
pDialog.setMessage(“正在保存\n….”);
setContentView(//您的布局);
pDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//做点什么
返回null;
}
@凌驾
受保护的void onProgressUpdate(字符串…值){
super.onProgressUpdate(值);
setProgress(Integer.parseInt(值[0]);
}
@凌驾
受保护的void onPostExecute(字符串结果){
if((pDialog!=null)&&(pDialog.isShowing()){
pDialog.disclose();
}

}

onPreExecute()内启动进度条
并在
onPostExecute
内停止进度条。当我尝试调用showDialog(dialog\u LOADING)时,请在onPreExecute和onPostExecute中使用进度对话框;在on preexecute中,它会出错,您的异步任务在LoginActivity外吗?我没有使用过相同的类Asynk TaskshowDialog(DIALOG_LOADING);,dismissDialog(DIALOG_LOADING);此行将出现错误无法解决
class download extends AsyncTask<Void,Void,Void>
{
@Override
protected void onPreExecute() {
    super.onPreExecute();
    showDialog(DIALOG_LOADING); //custom alert start when AsyncTask start

}

@Override
protected Void doInBackground(Void... voids) {
    return null;
}

@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);
  dismissDialog(DIALOG_LOADING);  //custom dialog  Dissmiss when AsyncTask completed

}
}
public class Download extends AsyncTask<Void,Void,Void>{
    private Activity activity;
    private static final int DIALOG_LOADING = 1;
    public Download(Activity activity){
         this.activity = activity;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // before start download task
        activity.showDialog(DIALOG_LOADING);
    }

    @Override
    protected Void doInBackground(Void... voids) {
         // start dowanload task here
         return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        // after downloaded data
        activity.dismissDialog(DIALOG_LOADING);
    }
}
public class LoginActivity extends Activity {

    public static final int DIALOG_LOADING = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);


        new download().execute();

    }


   class download extends AsyncTask<Void,Void,Void>
{
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
       showDialog(DIALOG_LOADING);
    }

    @Override
    protected Void doInBackground(Void... voids) {
        //do your stuff here 
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        dismissDialog(DIALOG_LOADING);
    }
}


@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DIALOG_LOADING:
                final Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                //here we set layout of progress dialog
                dialog.setContentView(R.layout.custom_progress_dialog);
                dialog.setCancelable(true);
                dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    public void onCancel(DialogInterface dialog) {
                        // TODO Auto-generated method stub

                    }
                });
                return dialog;

            default:
                return null;
        }
    };
public class MyAsyncTask extends AsyncTask<String, String, String> {
private Context context;
private ProgressDialog pDialog;

public SavePatientData(Context context) {
    this.context = context;
}

@Override
protected void onPreExecute() {

    super.onPreExecute();
    pDialog = null;
    pDialog = new ProgressDialog(context, ProgressDialog.THEME_HOLO_LIGHT);
    pDialog.setMax(100);
    pDialog.setCancelable(false);
    pDialog.setMessage("Saving\n .....");
    pDialog.setContentView(// your coustom layout);
    pDialog.show();
}

@Override
protected String doInBackground(String... params) {
    // do someting
    return null;
}

@Override
protected void onProgressUpdate(String... values) {
    super.onProgressUpdate(values);
    pDialog.setProgress(Integer.parseInt(values[0]));
}

@Override
protected void onPostExecute(String result) {
    if ((pDialog != null) && (pDialog.isShowing())) {
    pDialog.dismiss();
}