我的问题
在等待收到短信时,如何在android中显示进度条?
该对话框应满足以下条件
我试过什么
public class GetSMS extends Activity {
...
...
private boolean progressDialogFlag;
private ProgressDialog progressDialog;
...
...
new SMSReceiver().execute();
}
public class SMSReceiver extends AsyncTask<Void, Integer, Void> {
protected void onPreExecute() {
// start a progressdialog box
super.onPreExecute();
progressDialogFlag = true;
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage("Waiting to Receive SMS...");
progressDialog.setCancelable(false);
progressDialog.show();
}
protected void onProgressUpdate(Integer... progress) {
super.onProgressUpdate(progress);
if (progressDialogFlag == true) {
progressDialog.setProgress(progress[0]);
}
if (progress[0] == 100 || progressDialogFlag == false) {
progressDialog.dismiss();
}
}
protected void onPostExecute(Void result) {
}
@Override
protected Void doInBackground(Void... params) {
int interval = 2;
int totalDuration = 5 * 60 * 1000; // 5 min
int sleepPeriod = (totalDuration / 100) * interval;
for (int i = 2; i <= 100; i += 2) {
publishProgress(i);
try {
Thread.sleep(sleepPeriod);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
}
smsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
progressdialog = false;
}
}我的怀疑是什么
progressDialogFlag来拒绝progressDialog是造成问题的原因。progressDialogFlag会导致某种种族状况。谢谢你帮忙。
发布于 2012-06-13 12:24:17
可以在启动progressDialog时尝试如下所示
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(null!=progressDialog && progressDialog.isShowing()){
// try{
progressDialog.dismiss();
}
}
}, 5*60*1000);但需要更多的检查.
发布于 2012-07-02 19:32:03
就像这样:
private ProgressDialog p;
private void sendSMS(){
p = new ProgressDialog(Context);
registerReceiver(broadcastReceiver, SMSINTENT);
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
p.dismiss();
getActivity().unregisterReceiver(this);
}
};不知道这是否是最好的解决方案,但它是有效的!
https://stackoverflow.com/questions/11014653
复制相似问题