Spróbuj tego:
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
}
}
Możesz nazwać to AsyncTask w następującym wierszu - zakładając, że jesteś w działaniu:
new FetchData().execute(this);
jeśli nie możesz zmienić opóźnienia AsyncTask, możesz spróbować użyć zmiennej statycznej — chociaż nie jest ona tak wydajna i ładna jak zwalnianie AsyncTask. Spróbuj tego:
Class myStatic{
private static Context mContext;
static public void setContext(Context c);
mContext = c;
}
static public Context getContext(){
return mContext;
}
}
a w głównym kodzie, zanim wywołasz AsyncTask, wywołaj to:
myStatic.setContext(this);
w metodzie doInBackground swojego AsyncTask dodaj to:
Context myContext = myStatic.getContext();