任何人都可以告诉我为什么进度条轮不旋转...我试图从Web服务器下载数据时放入进度条一切都很好,直到现在...我可以在下载数据时设置进度条但问题进度条微调器不旋转....下面是我的进度条代码:
<Progressbar
android:id="@+id/xPBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
style="@android:style/Widget.ProgressBar.Inverse"/>
这是下载代码: 在执行此方法时,我正在显示进度条
public void downloadAlerts() {
mPBar.setVisibility(ProgressBar.VISIBLE);
Runnable r = new Runnable() {
@Override
public void run() {
if (checkNetworkStatus(getApplicationContext()) == true) {
String alert = con.execute(ALERTS_URL
);
AlertsParser parser = new AlertsParser();
parser.parseJson(alert);
startActivity(new Intent(getApplicationContext(), Alerts.class));
onSuccessDownload();
} else if (checkNetworkStatus(getApplicationContext()) == false) {
onFailureDownload();
}
}
};
mHandler.post(r);
}
...谢谢
答案 0 :(得分:4)
答案 1 :(得分:3)
致电
mHandler.post(r)的
您没有在新线程中运行runnable,而是将其发布到消息队列中 - 这意味着在主UI线程中。这会导致应用程序在您下载数据时冻结。
您应该运行AsyncTask或新线程。例如,在你的Runnable r的末尾添加类似
的内容Runnable r = new Runnable(){
@Override public void run() { ....... context.runOnUiThread(new Runnable() { @Override public void run() { hideProgressOnSuccess_andShowData(); } }); }
}
然后像这样运行你的Runnable:
new Thread(r).start();
使用AsyncTask并使用其onPreExecute和onPostExecute,它当然可以更优雅。
电贺, 丹