【发布时间】:2012-04-08 00:44:23
【问题描述】:
我想使用 AsyncTask 来检查 InetAddress,如下面的代码所示。变量 tempInet 是一个全局变量,指示该网站是否可联系。
我从代码开始 AsyncTask... new InetAsyncTask().execute("www.facebook.com");
我的问题是我希望 AsyncTask 在(比如说)10 秒后自行取消。
其他一些问题建议使用 get(10, TimeUnit.SECONDS) 方法。我想这样做,但不确定在哪里/如何放置 get 方法。执行?在 doInBackground 方法中?
另外,get() 方法会阻塞主线程吗?如果有,那有什么意义呢?
任何帮助表示赞赏。
class InetAsyncTask extends AsyncTask<String, String, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
try {
InetAddress.getByName("www.facebook.com");
return true;
} catch (UnknownHostException e) {
return false;
}
} //end doInBackground function
protected void onPostExecute(Boolean... result) {
tempInet = result[0];
}
} //end class
相关问题
Android - Setting a Timeout for an AsyncTask?
stop async task after 60 second
Android 开发者 AsyncTask 文档
http://developer.android.com/reference/android/os/AsyncTask.html
【问题讨论】: