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