0

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

但我的问题是我需要我的应用程序中的所有其他内容“等待”数据设置完成,然后再开始其业务,但仍然保持方便的对话框告诉用户发生了什么,我正在努力寻找如何去做.

如果有人有任何很棒的想法。

4

2 回答 2

1

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

见下文

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..
    }
};
于 2013-08-01T07:10:33.793 回答
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");
于 2013-08-01T06:29:09.463 回答