我需要在app处理一些数据时显示用户信息。我喜欢使用ProgressDialog
pd = ProgressDialog.show(MainActivity.this,
"", "Processing",
true, false);
连接到网络和下载数据时处理,但是当网络不可用时,它立即返回,我的进度对话框只是快速闪烁。是否有更优雅的解决方案然后将catch线程放入睡眠状态一段时间:
try{
//connecting and calculating
}
catch(Exception exc){
Thread.sleep(400);
handler.sendEmptyMessage(0);
}
无论成功与否,我都需要为ProgressDialog设置最短时间?有谁知道如何实现这一目标?
答案 0 :(得分:2)
这会对你有所帮助
在对话框初始化
之后立即编写以下代码new Thread(){
public void run(){
try{
Thread.sleep(5000);
}
catch(Exception ex){}
try{
Message msg=actHandler.obtainMessage();
actHandler.sendMessage(msg);
}
catch(NullPointerException ex){
Log.e("Handler Exception :",ex.toString());
dialog.dismiss();
}
}
}.start();
actHandler=new Handler(){
public void handleMessage(Message msg){
super.handleMessage(msg);
doSomthing();
}
};
public void doSomething(){
dialog.dismiss();
}
答案 1 :(得分:1)
我会反过来这样做:只显示你的progressDialog 如果你可以建立连接。我觉得让用户等待0.4秒,你已经知道的结果是毫无意义的;)