关于progressdialog 执行任务完怎么自动消失 不用thread
  List<PhoneGis> list = dbService.findAll();
    if (list.size() != 0) {
        //简介写法
        mTextView.setText("发送开始...");
        progressdialog = ProgressDialog.show(BeginInspection.this, "请稍等片刻...", "开始发送据...");
        // 让ProgressDialog显示
        progressdialog.show();

    }
    PhoneGis p;
    for (int i = 0; i < list.size(); i++) {
        p = list.get(i);

    String content ="userphone=" + p.getUserphone() + "&imei=" + imei +
        "&timestamp=" + p.getTimestamp();
        if (i == list.size()-1) {
            progressdialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                    mTextView.setText("发送结束...");
                    Toast.makeText(getApplicationContext(), "发送结束...",  Toast.LENGTH_SHORT).show();

                }
            });
        }
        if (sendDate(content)) {
            progressdialog.dismiss();
        dbService.delete(p.getId());
        System.out.println("时间====" + p.getTimestamp());
        }
    }

代码如上
为什么点击按钮 不能显示progressdialog = ProgressDialog.show(BeginInspection.this, "请稍等片刻...", "开始发送据...");这个toast 而是 等循环体结束后才显示 然后在继续显示 结束
如果要想实现 点击按钮 显示toast 开始发送数据 然后循环结束后显示 toast 发送结束 该怎么实现呢???

4个回答

还是建议你使用 AsyncTask 来实现,你可以从我的博客中的这篇文章中下载实例,非常之简单的[url]http://rainbow702.iteye.com/admin/blogs/1154918[/url]

因为你把所有的这几个操作都放在了主线程(即 UI 线程)中执行了,这样当然不行,你需要把另起一个线程来执行你的 循环 操作

这种操作推荐你使用 AsyncTask 类来实现,非常方便

[code="java"]
new Thread(new Runnable({
public void run(){
PhoneGis p;
for (int i = 0; i < list.size(); i++) {
p = list.get(i);

String content ="userphone=" + p.getUserphone() + "&imei=" + imei +
"&timestamp=" + p.getTimestamp();
if (i == list.size()-1) {
progressdialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mTextView.setText("发送结束...");
Toast.makeText(getApplicationContext(), "发送结束...", Toast.LENGTH_SHORT).show();

}
});
}
if (sendDate(content)) {
progressdialog.dismiss();
dbService.delete(p.getId());
System.out.println("时间====" + p.getTimestamp());
}
}
}
})).start();
[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐