progressbar.setprogress调用新线程还是无反应
时间: 2023-08-23 08:22:11 浏览: 65
如果您在Android开发中使用`progressbar.setprogress`来更新进度条,并且发现该方法没有响应,有可能是因为该方法被调用的线程与UI线程不是同一线程。在Android中,UI线程是主线程,所有的UI操作都必须在UI线程中执行,否则将会出现无响应或崩溃等问题。
因此,如果您需要在后台线程中更新进度条,可以使用`Handler`或者`AsyncTask`等方式来实现在UI线程中更新进度条的效果。具体来说,您可以在`AsyncTask`类中重写`onProgressUpdate`方法,来更新进度条的进度值。示例代码如下:
```java
private class MyTask extends AsyncTask<Void, Integer, Void> {
@Override
protected Void doInBackground(Void... voids) {
// 在后台线程中执行耗时操作,并通过publishProgress更新进度条的进度值
for (int i = 0; i <= 100; i++) {
publishProgress(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// 在UI线程中更新进度条的进度值
mProgressBar.setProgress(values[0]);
}
}
```
在上述代码中,`doInBackground`方法中执行耗时操作,并通过`publishProgress`方法更新进度条的进度值。`onProgressUpdate`方法在UI线程中执行,用于更新进度条的进度值。
如果您需要在其他线程中更新进度条的进度值,可以使用`Handler`来实现。具体来说,您可以在UI线程中创建一个`Handler`对象,并使用`post`或者`sendMessage`方法来发送消息,从而在其他线程中更新进度条的进度值。示例代码如下:
```java
private ProgressBar mProgressBar;
private Handler mHandler = new Handler();
private void updateProgress(final int progress) {
mHandler.post(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress(progress);
}
});
}
```
在上述代码中,`updateProgress`方法用于在其他线程中更新进度条的进度值。该方法通过`Handler`对象的`post`方法将更新进度条的代码放入UI线程中执行,从而实现了在其他线程中更新进度条的效果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)