У меня есть асинтекс, чтобы проверить доступ к Интернету, но иногда он не запускается. Поэтому я был бы признателен, если бы объяснил мне это странное поведение.Почему asynctask выполняется один раз, даже если, я закрываю аппликацию?
это мой код:
if(activeNetworkinfo.getType()==ConnectivityManager.TYPE_WIFI){
if(NetworkPrivider()){
//this is my asyntask with weird behavior,and always enter here.
CheckInternetAccess ch=new CheckInternetAccess();
ch.execute();
Log.i("sms", "Esta conetado a wifi");
}else{
mycallback.QuePaso(MainActivity.LOCALIZACION_APAGADA_WIFI);
}
}if(activeNetworkinfo.getType()==ConnectivityManager.TYPE_MOBILE){
Log.i("sms", "Esta conetado a datos");
if(GpsON()){
CheckInternetAccess ch=new CheckInternetAccess();
ch.execute();
}else{
mycallback.QuePaso(MainActivity.LOCALIZACION_APAGADA_GPS);
}
}
и это мой asyntask:
public class CheckInternetAccess extends AsyncTask<Void, Void, Boolean> {
//http://clients3.google.com/generate_204
@Override
protected Boolean doInBackground(Void... params) {
Log.i("sms", "Checando acceso a internet...");
try {
HttpURLConnection urlc = (HttpURLConnection)
(new URL("http://clients3.google.com/generate_204")
.openConnection());
urlc.setRequestProperty("User-Agent", "Android");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1000);
urlc.connect();
return (urlc.getResponseCode() == 204 && urlc.getContentLength() == 0);
}catch (SocketTimeoutException ex){
Log.e("ChecarInternet: ", "Error esperando", ex);
cancel(true);
}catch (ConnectException e) {
Log.e("ChecarInternet: ", "Sin acceso a internet", e);
cancel(true);
} catch (Exception e) {
Log.e("ChecarInternet: ", "Error checking internet connection", e);
cancel(true);
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
if(result){
//do someting.
}
}
}
когда я устанавливаю-анкету asyntask выполняется, но если я закрыть-анкету и я снова открыт уже не выполняйте asynctask до этого, я удаляю данные приложения или устанавливаю снова. иногда выполняется нормально.
Является ли это в OnCreate метод? когда вы говорите близко, вы имеете в виду, что вы убиваете приложение или это просто вне экрана? вы можете вызвать это в onResume(). –
в методе oncreate вызывает класс, и этот класс имеет asyntask и интерфейс, который я реализую в activitymain, поэтому, когда результат asyntask равен true, выполните calback к моей mainactivity в строке «// do someting». и когда я закрываю аппликацию, я хочу полностью уничтожить. и я сожалею о своем английском, но я из mexico .. –