gpt4 book ai didi

android - 如何在一定时间后显示 ProgressBar

转载 作者:行者123 更新时间:2023-11-29 23:16:54 25 4
gpt4 key购买 nike

我正在使用 Android API 级别 23 (Android 6)。我正在使用 com.loopj.android.http.AsyncHttpClient 来实现与我的后端服务器的异步通信,它工作正常。

在与服务器通信时,我显示了一个进度条像这样:

findViewById(R.id.loadingPanel).setVisibility(View.VISIBLE);

然后像这样隐藏它:

findViewById(R.id.loadingPanel).setVisibility(View.GONE);

完成时 suggested here .

它工作得非常好。

现在大多数时候,对服务器的请求只需要几毫秒,因此显示和隐藏进度条会导致一些闪烁,如果请求时间只有这么短,这是不必要的而且很烦人。

只有在请求开始一段时间后才显示进度条的好方法是什么,比方说一秒后?

最佳答案

我猜你做了类似下面的事情

 AsyncHttpClient client = new AsyncHttpClient();
client.get("https://www.example.com", new AsyncHttpResponseHandler() {

@Override
public void onStart() {
// called before request is started
findViewById(R.id.loadingPanel).setVisibility(View.VISIBLE);
}

@Override
public void onSuccess(int statusCode, Header[] headers, byte[] response) {
// called when response HTTP status is "200 OK"
findViewById(R.id.loadingPanel).setVisibility(View.GONE);
}

@Override
public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
// called when response HTTP status is "4XX" (eg. 401, 403, 404)
}

@Override
public void onRetry(int retryNo) {
// called when request is retried
}
});

只需尝试以下操作

boolean showProgress= true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AsyncHttpClient client = new AsyncHttpClient();
client.get("https://www.google.com", new AsyncHttpResponseHandler() {

@Override
public void onStart() {
// called before request is started
//findViewById(R.id.loadingPanel).setVisibility(View.VISIBLE);

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(showProgress){
findViewById(R.id.loadingPanel).setVisibility(View.VISIBLE);
}
}
}, 5*1000); // your progress will start after 5 seconds
}

@Override
public void onSuccess(int statusCode, Header[] headers, byte[] response) {
// called when response HTTP status is "200 OK"
//findViewById(R.id.loadingPanel).setVisibility(View.GONE);
showProgress = false;
}

@Override
public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
// called when response HTTP status is "4XX" (eg. 401, 403, 404)
showProgress = false;
}

@Override
public void onRetry(int retryNo) {
// called when request is retried
}
});
}

关于android - 如何在一定时间后显示 ProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55167843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com