Android progressBar 在调用 Retrofit 后没有设置进度
Android progressBar doesn't set progress after call Retrofit
我正在尝试模拟改造调用的进度,因此在执行调用之前我以这种方式开始进度:
public void runSimulateProgress(final CustomDialogLoad d){
new Thread(new Runnable() {
@Override
public void run() {
if (d != null){
int progress = 0;
while (d.getProgress() < 99){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
progress = progress+10;
d.setProgress(progress);
}
}
}
}).start();
}
CustomDialogLoad 是一个带有进度和 TextView 的对话框。
所以,当通话结束时,我想将进度设置为 100,但进度条没有改变,我尝试以手动方式对进度进行任何更改,但进度条不想更新.
这里是retrofit调用的代码
dialogProgress.runSimulateProgress(dialogProgress);
final SaveRutaVisitaService saveRutaVisitaService = restAdapter.create(SaveRutaVisitaService.class);
saveRutaVisitaService.saveRutaVisita(multipartTypedOutput, new Callback<Response>() {
@Override
public void success(Response result, Response response) {
dialogProgress.setProgress(100)
} @Override
public void failure(RetrofitError retrofitError) {
dialogProgress.setProgress(100)}
}
我试图根据这个问题取得真正的进步
Android Retrofit - onProgressUpdate for showing Progress Notification
但我对 multiPart 不起作用
感谢任何帮助
问候
编辑:我添加了 "post" 来更新进度,但仍然无法正常工作
public void setProgress(final int p){
mRingProgressBar.post(new Runnable() {
@Override
public void run() {
mRingProgressBar.setProgress(p);
}
});
}
该方法在 CustomDialogLoad 内部 class
您正试图从另一个线程更改 View
。检查这个问题 How to set text of text view in another thread
基本上,改变:
d.setProgress(progress);
到
d.post(new Runnable() {
public void run() {
d.setProgress(progress);
}
}
像这样更改您的代码
public void runSimulateProgress(final CustomDialogLoad d){
new Thread(new Runnable() {
@Override
public void run() {
if (d != null){
int progress = 0;
while (d.getProgress() < 99){
try {
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
progress = progress+10;
d.setProgress(progress);
}
}
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}).start();
}
我正在尝试模拟改造调用的进度,因此在执行调用之前我以这种方式开始进度:
public void runSimulateProgress(final CustomDialogLoad d){
new Thread(new Runnable() {
@Override
public void run() {
if (d != null){
int progress = 0;
while (d.getProgress() < 99){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
progress = progress+10;
d.setProgress(progress);
}
}
}
}).start();
}
CustomDialogLoad 是一个带有进度和 TextView 的对话框。
所以,当通话结束时,我想将进度设置为 100,但进度条没有改变,我尝试以手动方式对进度进行任何更改,但进度条不想更新.
这里是retrofit调用的代码
dialogProgress.runSimulateProgress(dialogProgress);
final SaveRutaVisitaService saveRutaVisitaService = restAdapter.create(SaveRutaVisitaService.class);
saveRutaVisitaService.saveRutaVisita(multipartTypedOutput, new Callback<Response>() {
@Override
public void success(Response result, Response response) {
dialogProgress.setProgress(100)
} @Override
public void failure(RetrofitError retrofitError) {
dialogProgress.setProgress(100)}
}
我试图根据这个问题取得真正的进步
Android Retrofit - onProgressUpdate for showing Progress Notification
但我对 multiPart 不起作用
感谢任何帮助
问候
编辑:我添加了 "post" 来更新进度,但仍然无法正常工作
public void setProgress(final int p){
mRingProgressBar.post(new Runnable() {
@Override
public void run() {
mRingProgressBar.setProgress(p);
}
});
}
该方法在 CustomDialogLoad 内部 class
您正试图从另一个线程更改 View
。检查这个问题 How to set text of text view in another thread
基本上,改变:
d.setProgress(progress);
到
d.post(new Runnable() {
public void run() {
d.setProgress(progress);
}
}
像这样更改您的代码
public void runSimulateProgress(final CustomDialogLoad d){
new Thread(new Runnable() {
@Override
public void run() {
if (d != null){
int progress = 0;
while (d.getProgress() < 99){
try {
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
progress = progress+10;
d.setProgress(progress);
}
}
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}).start();
}