SQLite
 sql >> Datenbank >  >> RDS >> SQLite

So verwenden Sie die DatabaseHelper-Klasse in einer Asynctask-Klasse, die an einer anderen Klasse arbeitet

Versuchen Sie Folgendes:

 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
     }
 }

Sie können diese AsyncTask über die folgende Zeile aufrufen - vorausgesetzt, Sie befinden sich in einer Aktivität:

 new FetchData().execute(this);

Wenn Sie Ihre AsyncTask-Verzögerung nicht ändern können, können Sie versuchen, eine statische Variable zu verwenden – obwohl dies nicht so effizient und schön ist wie die AsyncTask-Verzögerung. Versuchen Sie Folgendes:

Class myStatic{
private  static Context mContext;


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

static public Context getContext(){
return mContext;
}

}

und rufen Sie in Ihrem Hauptcode Folgendes auf, bevor Sie AsyncTask aufrufen:

myStatic.setContext(this);

Fügen Sie in Ihrer doInBackground-Methode Ihrer AsyncTask Folgendes hinzu:

Context myContext = myStatic.getContext();