Hãy thử điều này:
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
}
}
Bạn có thể gọi đây là AsyncTask theo dòng sau - giả sử bạn đang tham gia một hoạt động:
new FetchData().execute(this);
nếu Bạn không thể thay đổi mức giảm tốc AsyncTask của mình, thì bạn có thể thử sử dụng một biến tĩnh - mặc dù nó không hiệu quả và đẹp như giảm tốc AsyncTask. Hãy thử điều này:
Class myStatic{
private static Context mContext;
static public void setContext(Context c);
mContext = c;
}
static public Context getContext(){
return mContext;
}
}
và trong mã chính của bạn, trước khi bạn gọi AsyncTask, hãy gọi mã này:
myStatic.setContext(this);
trong phương thức doInBackground của AsyncTask của bạn, hãy thêm cái này:
Context myContext = myStatic.getContext();