我正在开发一个社交网络应用程序,大部分功能都需要主动连接。有时手机连接到 WIFI,但 WIFI 无法真正上网。普通的连接管理器不保证这一点,它只是检查手机是否连接。为此,它必须使用 asynctask 在后台设置 httpconnection。
public class checkConnectionStatus extends AsyncTask<Void, Void, HttpResponse>{
private HttpGet httpGet;
private HttpParams httpParameters;
private DefaultHttpClient httpClient;
private HttpResponse response;
@Override
protected void onPreExecute() {
String url = "http://www.google.come/";
httpGet = new HttpGet(url);
httpParameters = new BasicHttpParams();
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
httpClient = new DefaultHttpClient(httpParameters);
}
@Override
protected Void doInBackground(Void... params) {
try {
response = httpClient.execute(httpGet);
return response
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
return null;
}
@Override
protected void onPostExecute(HttpResponse result) {
super.onPostExecute(result);
// At here i do some thing
}
}
我知道如果这个类包含在每个函数类中,它应该可以正常工作。但是现在,我想通过简单地调用 new checkConnectionStatus().execute() 来重用代码。
因此,每当用户触发 onClick 中的操作时
onClick(){
if(checkConnectionStatus().execute() == false)
像这样的东西..有可能这样做吗?主线程上的网络是另一个问题。
请帮忙。谢谢