Я разрабатываю приложение для социальной сети, и для большинства функций требуется активное подключение. Иногда телефон подключается к WIFI, но WIFI на самом деле не доступен в Интернете. Обычный менеджер подключений этого не защищает, он просто проверяет, подключен ли телефон или нет. Для этого необходимо настроить httpconnection в фоновом режиме с помощью asynctask.
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)
как-то так.. это возможно сделать так? Сеть в основном потоке - еще одна проблема.
Пожалуйста помоги. Спасибо