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();