Android - " syncronous"的进度对话框任务

时间:2013-08-01 06:00:44

标签: android android-asynctask

当我第一次使用我的应用程序时,我正在执行一些需要“随机”时间才能完成的数据设置等,而这正在进行中我正在向用户显示进度对话框,告诉他们最新情况如何提出一个旋转轮,这一切都是通过异步任务完成的,因为许多文档和指南说是使用进度对话框的唯一方法。

但我的问题是我需要我的应用程序中的其他所有内容“等待”数据设置在它开始运营之前完成但仍保持方便的对话框告诉用户最新情况,我很难找到如何走吧。

如果有人有任何好的想法。

2 个答案:

答案 0 :(得分:1)

您可以使用线程进行数据设置,并在线程工作结束后使用处理程序进行实现。

见下文

ProgressDialog pd = ProgressDialog.show(this,"Please Wait..", "Data Setup in       Progress..", false, true);
pd.setCanceledOnTouchOutside(false);
Thread tDataSetup = new Thread(
new Runnable() 
{
    @Override
    public void run() 
    {
        //Insert the data setup code here.. 
    if(dataSetupDone)
        handlerDataSetup.sendEmptyMessage(OPERATION_COMPLETED);
    else
        handlerDataSetup.sendEmptyMessage(OPERATION_NOT_COMPLETED);
    }
});
tDataSetup.start();

private Handler handlerDataSetup = new Handler()
{
    @Override
    public void handleMessage(Message msg) 
    {
        if(pd.isShowing())
        {
            pd.dismiss();
        }

        if(msg.what == OPERATION_COMPLETED)
            //Code after the data Setup done , to be implemented here..
        else if(msg.what == OPERATION_NOT_COMPLETED)
            //Code if data setup fails..
    }
};

答案 1 :(得分:0)

这样的事情应该有效:

 ProgressDialog progress = new ProgressDialog(this);
 progress.setTitle("Loading");
 progress.setMessage("Wait while loading...");
 progress.show();
 // your vairiable time stuff here
 // To dismiss the dialog
 progress.dismiss();

如果您需要在完成某些工作后更新进度对话框,则可以执行类似

的操作
 progress.setMessage("I have a new message now");