SQLite
 sql >> Database >  >> RDS >> SQLite

Come utilizzare la classe databasehelper in una classe asynctask che lavora su una classe diversa

Prova questo:

 private class FetchData extends AsyncTask<Context, Void, Void> {
     protected Long doInBackground(Context... c) {
         Context myContext = c[0];
// Do your things here....
     }


     protected void onPostExecute() {
// Insert your post execute code here
     }
 }

Puoi chiamare questo AsyncTask dalla riga seguente, supponendo che tu sia in un'attività:

 new FetchData().execute(this);

se non riesci a modificare la decelerazione di AsyncTask, puoi provare a utilizzare una variabile statica, sebbene non sia efficiente e carina come la decelerazione di AsyncTask. Prova questo:

Class myStatic{
private  static Context mContext;


static public void setContext(Context c);
mContext = c;
}

static public Context getContext(){
return mContext;
}

}

e nel tuo codice principale, prima di chiamare AsyncTask, chiama questo:

myStatic.setContext(this);

nel tuo metodo doInBackground di AsyncTask, aggiungi questo:

Context myContext = myStatic.getContext();