我正在尝试从 Internet 获取数据,对其进行解析,然后将数据显示给用户。该动作通常需要 3 秒左右,我想在一个微调器 ProgressDialog 中显示一条消息,说明我正在加载数据。问题是 ProgressDialog 仅在加载几乎完成时显示。这是我的代码
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button load_routes = (Button)findViewById(R.id.load_routes);
load_routes.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
task_complete = false;
progressBar = new ProgressDialog(v.getContext());
progressBar.setCancelable(false);
progressBar.setMessage("Fetching routes data ...");
progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressBar.show();
if(haveNetworkConnection())
{
loading_routes_data(v);
}
else
{
progressBar.dismiss();
}
}
});
}
这是我调用 onclick 的函数
private void loading_routes_data(View v)
{
try
{
new Thread(new Runnable()
{
public void run()
{
while(!task_complete)
{
refresh_routes();
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
runOnUiThread(new Runnable()
{
public void run()
{
progressBar.dismiss();
}
});
}
}).start();
}
catch(Exception e)
{
}
while(!task_complete)
{
}
}
我的refresh_routes()
函数获取数据,解析它然后设置task_complete
为true
,我什至不确定是否应该将其保留在 while 循环中。
所以这是我的大问题。我想ProgressDialog
在按钮单击时立即显示,然后我想调用refresh_routes()
,一旦refresh_routes()
完成,我想摆脱进度对话框。但我不确定如何去做。
如果有人能以一些文章为例或类似的东西向我展示如何解决问题,我将不胜感激。先感谢您 :)