Android 使用AsyncTask设置请求超时的注意事项
final AsyncTaskTools task = new AsyncTaskTools(dialog, doTask, result, context);
mTask.execute("蓝牙读卡");
new Thread() {
public void run() {
try {
/**
* 在这里你可以设置超时时间,
* 切记:这段代码必须放到线程中执行,因为不放单独的线程中执行的话该方法会冻结UI线程
* 直接导致onPreExecute()方法中的弹出框不会立即弹出
*/
mTask.get(10000, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
Log.e(TAG, "异常1");
} catch (ExecutionException e) {
e.printStackTrace();
Log.e(TAG, "异常2");
} catch (TimeoutException e) {
e.printStackTrace();
Log.e(TAG, "异常3");
/**
* 如果在doInBackground中的代码执行的时间超出10秒则会出现这个异常,
* 所以这里就成为你处理异常操作的唯一途径,
* 备注:这里是不能够处理UI操