Java:Subclassing AsyncTask

EZF*_*rag 5 java android android-asynctask

我试图通常子类化android.os.AsyncTask类.我基本上只想添加一个属性.问题是,我仍然希望能够将它用作匿名类.

    import android.content.Context;
    import android.os.AsyncTask;

    public class KAsyncTask extends AsyncTask<Params, Progress, Result> {
        public Context c;

    }
Run Code Online (Sandbox Code Playgroud)

我已经尝试过对它进行子类化,但是我无法将它包裹在我脑海中我应该如何做到这一点.

此致,EZFrag

Reu*_*ton 16

你的意思是你仍然希望它成为像AsyncTask这样的抽象模板类?宣言将是:

public abstract class KAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
    public Context c;

}
Run Code Online (Sandbox Code Playgroud)


EZF*_*rag 6

感谢Reuben,它按预期工作100%.

这就是我现在拥有的:

    import android.content.Context;
    import android.os.AsyncTask;

    public abstract class KAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
        public Context context;

        public KAsyncTask<Params, Progress, Result> setContext(Context c){
            this.context = c;
            return this;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这就是我使用它的方式:

    new KAsyncTask<Void, Void, Void>() {

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            Toast.makeText(context, "Connecting to Server...", Toast.LENGTH_LONG).show();
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            //super.onPostExecute(result);
            Toast.makeText(context, "Responce Recieved.", Toast.LENGTH_LONG).show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            //Do webservice calls in here

            return null;
        }

    }.setContext(this).execute();
Run Code Online (Sandbox Code Playgroud)

我需要上下文从任务本身向用户显示消息.

此致,EZFrag