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.