Опитайте това:
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
}
}
Можете да извикате тази AsyncTask със следния ред - ако приемем, че сте в дейност:
new FetchData().execute(this);
ако не можете да промените забавянето на AsyncTask, тогава можете да опитате да използвате статична променлива - въпреки че не е толкова ефективна и красива като забавянето на AsyncTask. Опитайте това:
Class myStatic{
private static Context mContext;
static public void setContext(Context c);
mContext = c;
}
static public Context getContext(){
return mContext;
}
}
и в основния си код, преди да извикате AsyncTask, извикайте това:
myStatic.setContext(this);
във вашия метод doInBackground на вашата AsyncTask, добавете това:
Context myContext = myStatic.getContext();