我是Async Task android的新手
我真的有一个简单的问题..请告诉我,如果在此之前询问过这个问题,请在哪里寻找
我正在使用AsyncTask
此asynctask中的doInBackground用于对我自己的服务器的POST请求
但有时,当我的服务器因电或其他问题而停机时,
这个AsyncTask将永远加载
当asynctask仍在运行时,我打开我的电脑,服务器再次启动,但异步任务仍在运行并永远加载,直到我关闭程序,并在后面运行
我不希望我的用户体验它
我想,我想要的是
让异步任务运行doInBackground大约20秒,20秒后,如果仍然没有结果,那么我会做点什么
我该怎么做?
我应该为这20秒做另一个线程吗? 或者是否有任何可以设置为asynctask的计时器..
感谢之前..
答案 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_TIMEOUT
和SOCKET_TIMEOUT
以毫秒为单位。