Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/07/2014, 18:05
Avatar de calichecal
calichecal
 
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 14 años, 10 meses
Puntos: 12
Busqueda Limitar el tiempo de ejecución de un hilo AsyncTask

Hola a todos, un saludo.

Estoy empezando con esto de las aplicaciones en android. Y ya he creado una aplicación que se conecta directamente a una base de datos en mysql.

Todo funciona perfectamente, ya había programado en java y solo tuve que familiarizarme con la clase AsyncTask para realizar la conexión en un hilo aparte.

Pero aplicando el plan de pruebas a esta aplicación, me di cuenta que si se corta la conexión a Internet en el momento en que este hilo esta intentando realizar la conexión, entonces este hilo se queda en una ejecución permanente. Por ello quisiera colocar un limite de tiempo para que este proceso establezca conexión, pero no se como.

Esta es mi subclase de AsyncTask:

Código:
	class HiloConexion extends AsyncTask<Integer, Void, Integer> {

	    

	    @Override protected void onPreExecute() {
	    	
	    	estado.setTextSize(20);
	    	estado.setTextColor(Color.parseColor("#239F00"));
		estado.setText(R.string.login_progress_signing_in);	
		entrar.setClickable(false);
    		usuario.setEnabled(false);
    		mPasswordView.setEnabled(false);
	    
	    }


	    @Override protected void onPostExecute(Integer result) {
		
	    	
	    	entrar.setClickable(true);
    		usuario.setEnabled(true);
    		mPasswordView.setEnabled(true);

	    	
	    	if(result == 1){
	    		
	    	    estado.setText("");
	            Intent intent = new Intent(LoginActivity.this, VehiculosActivity.class)
	            .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
	            intent.putExtra("usuarioBD",usuarioBD);
	            startActivity(intent);
	            
	            
	    
         
	            
	    	}else if(result == 2){
	    		
	    		estado.setText("");
	    		
	    		Toast.makeText(getApplicationContext(), "Por favor verifique su conexión a internet",
                        Toast.LENGTH_LONG).show();	
	    		
	    	}else{
	    		
	    		
	    		estado.setTextColor(Color.RED);
			estado.setTextSize(15);
			estado.setText(R.string.datos_incorrectos);
	    	}			

	    }

		@Override
		protected Integer doInBackground(Integer... arg0) {

			
			
			if(Mysql.crearConexion()){

				if(verificarUsuario()){
					
					return 1;
				}else{
					return 0;
					
				}

			}else{
				return 2;
			}			
			
		}

	}
Y este es el método estático de la clase Mysql que llamo en la clase anterior:

Código:

	public static boolean crearConexion() {
		try {
			if (mySQLConn == null)
				mySQLConn = DriverManager.getConnection(url, user, pass);
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}

Agradezco sus consejos y aportes !! Me despido.
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Última edición por calichecal; 30/07/2014 a las 18:11