Pregunta

He estado usando mi clase Actividad para acceder a mi DB que hizo que mi programa de congelación veces.

Así que decidí utilizar AsyncTask en vez de manejar la base de datos.

Mi problema es que no sé cómo crear una instancia de mi SQLite DB "TheDB" de la clase de AsyncTask

public class myClass extends AsyncTask<Void, Void, Void>{
private TheDB db;

any method() {
    this.db = new TheDB(this);  //<-- Error here
}

esta bien trabajado en la clase de actividad, pero que no saben cómo usarlo aquí

El constructor de TheDB es TheDB (contexto Contexto), pero esta clase no es un "contexto" Entonces, ¿cómo puedo usar mi DB aquí?

brindar ejemplos si es posible

y por favor no me dan enlaces a Google referencias, soy un novato y me parecen difíciles de seguir

¿Fue útil?

Solución

que necesita para aprobar el contexto de aplicación aquí

this.db = new TheDB(getApplicationContext());

Otros consejos

import android.content.Context;

public class SuperTask extends AsyncTask<Void, Void, Void> {
    private final Context mContext; 

    public SuperTask(Context context) {
        super();
        this.mContext = context
    }

    protected Void doInBackground(Void... params) {
        // using this.mContext
    }
}

public class MainActivity extends Activity {
    // and run from Activity
    public void onButtonClick(View view) {
        new SuperTask(this.getApplicationContext()).execute(); 
    }
}

Hay dos maneras que veo:

  1. Pasar un objeto de contexto a su constructor AsyncTask, base de datos entonces instantiate como este this.db = nuevo TheDB (contexto);

  2. O es probable que pueda pasar el objeto de base de datos real al constructor, pero el primer enfoque parece mejor.

Una parte importante de aprender a programar es aprender a leer y entender la documentación. Como documentación va, la documentación de Android están bastante detallados, así que es realmente vale la pena su tiempo para entender cómo funcionan.

Como se puede ver en la AsyncTask docs , no hay es método onCreate o onExecute en un AsyncTask.

Los documentos que caminan claramente a través de las 4 funciones principales de un AsyncTask, onPreExecute(), doInBackground(Params...), onProgressUpdate(Progress...), onPostExecute(Result).

Las opciones probables para la instancia son onPreExecute() o doInBackground(Params...). La diferencia es si desea o no que el initializition que se produzca en el subproceso de interfaz de usuario. Si no lo hace, a continuación, hacerlo en doInBackground(Params...).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top