当我的应用程序第一次使用时,我正在执行一些需要“随机”时间才能完成的数据设置等,而在此过程中,我正在向用户显示一个进度对话框,告诉他们发生了什么并呈现一个旋转轮子,这一切都是通过异步任务完成的,因为许多文档和指南都说这是使用进度对话框的唯一方法。
但我的问题是我需要我的应用程序中的所有其他内容“等待”数据设置完成,然后再开始其业务,但仍然保持方便的对话框告诉用户发生了什么,我正在努力寻找如何去做.
如果有人有任何很棒的想法。
当我的应用程序第一次使用时,我正在执行一些需要“随机”时间才能完成的数据设置等,而在此过程中,我正在向用户显示一个进度对话框,告诉他们发生了什么并呈现一个旋转轮子,这一切都是通过异步任务完成的,因为许多文档和指南都说这是使用进度对话框的唯一方法。
但我的问题是我需要我的应用程序中的所有其他内容“等待”数据设置完成,然后再开始其业务,但仍然保持方便的对话框告诉用户发生了什么,我正在努力寻找如何去做.
如果有人有任何很棒的想法。
您可以使用 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..
}
};
像这样的东西应该工作:
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");