Android AsyncTask如何设置计时器

时间:2014-07-03 03:16:55

标签: java android multithreading android-asynctask

我是Async Task android的新手

我真的有一个简单的问题..请告诉我,如果在此之前询问过这个问题,请在哪里寻找

我正在使用AsyncTask

此asynctask中的doInBackground用于对我自己的服务器的POST请求

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

这个AsyncTask将永远加载

当asynctask仍在运行时,我打开我的电脑,服务器再次启动,但异步任务仍在运行并永远加载,直到我关闭程序,并在后面运行

我不希望我的用户体验它

我想,我想要的是

让异步任务运行doInBackground大约20秒,20秒后,如果仍然没有结果,那么我会做点什么

我该怎么做?

我应该为这20秒做另一个线程吗? 或者是否有任何可以设置为asynctask的计时器..

感谢之前..

1 个答案:

答案 0 :(得分:4)

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

例如,如果使用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以毫秒为单位。