【问题标题】:How can I make a AsyncTask<String, String, String> wait for 30 seconds?如何让 AsyncTask<String, String, String> 等待 30 秒?
【发布时间】:2021-09-21 20:02:54
【问题描述】:

我尝试使用异步进行api调用,有时请求需要超过10秒,有没有办法让请求等待30秒

new Act().execute(val, val2, "");

 public class Act extends AsyncTask<String, String, String> {

        protected String doInBackground( String... params ) {
            return "";
        }

        @Override
        protected void onPostExecute( String pResult ) {
           
        }
    }

【问题讨论】:

  • 我认为这与 AsyncTask 本身无关,很可能是您用来发出请求的库/方法超时。
  • @javdromero 请求每次只等待 10 秒
  • 正如@javdromero 所说,它与您使用的HTTP 客户端有关。如果要设置请求读/写超时,可以在 HTTP 客户端初始化中执行此操作。请编辑问题并添加您使用的库的名称,以便于帮助您。 AsyncTask 现在也已弃用,您可以使用 RxJava 之类的东西或您的 HTTP 客户端提供的回调。

标签: android api async-await request android-asynctask


【解决方案1】:

Retrofit & OkHttp 是解决这个问题的更有针对性的方法。您可以通过OkHttp 创建一个客户端,并为其分配超时。这是一个例子How to set timeout in Retrofit library? 在同一个示例中,您可以找到一个基本的 Retrofit 示例。

AsyncTask 只是让事情远离UIThread 就是这样。它的生命周期由你的实现内容决定 => Act,而不是 AsyncTask 它自己。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2017-06-03
    相关资源
    最近更新 更多