有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android异步任务如何设置计时器

我是安卓异步任务新手

我只有一个简单的问题。。如果以前有人问过这个问题,请告诉我去哪里找

我正在使用异步任务

此asynctask中的my doInBackground用于向我自己的服务器发出POST请求

但有时,当我的服务器可能因为电力或其他问题而停机时

此任务将永远加载

当异步任务仍在运行时,我打开我的计算机,服务器再次启动,但异步任务仍在运行并永远加载,直到我关闭程序并返回运行

我不想让我的用户体验它

我想,我想要的是

让异步任务运行doInBackground大约20秒,20秒后,如果仍然没有结果,那么我将做一些事情

我该怎么做

我应该为这20秒再做一条线吗? 或者是否有可以设置为asynctask的计时器

谢谢你


共 (1) 个答案

  1. # 1 楼答案

    您应该为网络操作添加超时。这样,如果超过此超时,它将抛出异常

    例如,如果使用DefaultHttpClient,它将类似于:

    HttpParams httpParameters = client.getParams();
    HttpConnectionParams.setConnectionTimeout(httpParameters, CONNECTION_TIMEOUT);
    HttpConnectionParams.setSoTimeout(httpParameters, SOCKET_TIMEOUT);
    

    如果是HttpUrlConnection,请使用:

    connection.setConnectTimeout(CONNECTION_TIMEOUT);
    connection.setReadTimeout(SOCKET_TIMEOUT);
    

    其中CONNECTION_TIMEOUTSOCKET_TIMEOUT以毫秒为单位