Ahora que nos encontramos desarrollando aplicaciones móviles para iOS y Android, nos hemos topado en Android con demasiadas excepciones. Básicamente se deben a que se supera el tiempo máximo permitido por el SO (La excepción que manda es “StrictMode policy violation”).
Para solventar el problema, básicamente recomendamos realizar las siguientes actividades utilizando “AsyncTask”:
- Cargar archivos,
- Cargar imagenes,
- Conectarse a API’s,
- Abrir, leer o guardar en la BD.
Un ejemplo sencillo de un “AsyncTask” para abrir la BD:
public class MyHelper extends SQLiteOpenHelper { private MyDatabaseTask myDatabaseTask; //TODO all your own variables public void open() { try { myDatabaseTask = new MyDatabaseTask(this); myDatabaseTask.execute(); } catch (Exception e){ Log.e(TAG, e.getMessage()); } } //TODO all your own methods private class MyDatabaseTask extends AsyncTask<Void, Void, SQLiteDatabase>{ SQLiteOpenHelper sqliteOpenHelper; public MyDatabaseTask(SQLiteOpenHelper sqliteOpenHelper){ this.sqliteOpenHelper = sqliteOpenHelper; } @Override protected SQLiteDatabase doInBackground(Void... params) { return sqliteOpenHelper.getWritableDatabase(); } @Override protected void onPostExecute(SQLiteDatabase sqliteDatabase) { myDatabaseTask = null; } } } |
La siguiente semana estaré escribiendo un ejemplo sencillo de como implementar un “Event Listener” para complementar las AsyncTask.