Android 从线程启用和更新progressbar
当我尝试从线程访问Progressbar或更新进度时,Progressbar将不会显示。我希望在网络活动完成之前显示一个进度微调器,此网络活动只是将一些文本数据发布到服务器。这是我迄今为止的代码,非常感谢您的帮助,谢谢Android 从线程启用和更新progressbar,android,Android,当我尝试从线程访问Progressbar或更新进度时,Progressbar将不会显示。我希望在网络活动完成之前显示一个进度微调器,此网络活动只是将一些文本数据发布到服务器。这是我迄今为止的代码,非常感谢您的帮助,谢谢 Thread th = new Thread(){ public void run() { try { sleep(5000);
Thread th = new Thread(){
public void run() {
try {
sleep(5000);
while(cnt < 5000){
activty.this.runOnUiThread(new Runnable(){
public void run()
{
ProgressBar pd = (ProgressBar)findViewById(R.id.progressBar1);
pd.setVisibility(0);
pd.setMax(100);
pd.setProgress(cnt);
cnt += 100;
}
});
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
int cnt = 100;
};
th.start();
`
Thread th=新线程(){
公开募捐{
试一试{
睡眠(5000);
而(cnt<5000){
activty.this.runOnUiThread(新的Runnable(){
公开募捐
{
ProgressBar pd=(ProgressBar)findViewById(R.id.progressBar1);
pd.setVisibility(0);
pd.setMax(100);
pd.setProgress(cnt);
cnt+=100;
}
});
}
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
int cnt=100;
};
th.start();
`
这正是您希望使用的情况,它在单独的线程中处理数据,并包含方法publishProgress
和onProgressUpdate
在UI线程上更新UI
还有一个示例说明了如何实现异步任务。您是否检查了xml?可能其他视图没有为progressbar留出足够的空间。您的眼光也不错,我可能忽略了这一点。有没有办法创建一个通用的asynctask类,或者我必须为我必须在活动中执行的每个网络活动创建一个类。@kabuto178试试这个,您可以根据请求更改doInBackground中的代码,即获得或post@kabuto178-
AsyncTask
的doInBackground可以接受参数,因此,例如,如果唯一的区别是需要下载的文件,则可以将其传递到AsyncTask中并重新使用:new NetworkAsyncTask().execute(urlToDownload)
例如,一个任务需要返回位图,另一个任务需要在my中返回JSONObjectcase@kabuto178-那么听起来两个任务似乎更合适。