Return data from AsyncTask class

modify your AsyncTask as below:

public class GetData extends AsyncTask<String, Void, String>
{
    DataDownloadListener dataDownloadListener;
    public GetData()
    {
        //Constructor may be parametric 
    }
    public void setDataDownloadListener(DataDownloadListener dataDownloadListener) {
        this.dataDownloadListener = dataDownloadListener;
    }
    @Override
    protected Object doInBackground(Object... param) 
    {
        // do your task...
        return null;
    }
    @Override
    protected void onPostExecute(Object results)
    {       
        if(results != null)
        {               
        dataDownloadListener.dataDownloadedSuccessfully(results);
        }
        else
        dataDownloadListener.dataDownloadFailed();
    }
    public static interface DataDownloadListener {
        void dataDownloadedSuccessfully(Object data);
        void dataDownloadFailed();
    }
}

and use it in your Activity

GetData getdata = new GetData();
getdata.setDataDownloadListener(new DataDownloadListener()
{
    @SuppressWarnings("unchecked")
    @Override
    public void dataDownloadedSuccessfully(Object data) {
    // handler result
    }
    @Override
    public void dataDownloadFailed() {
    // handler failure (e.g network not available etc.)
    }
});
getdata.execute("");

NOTE: For the people who are reading this.

Please consider this post for the best and perhaps right implementation.

Leave a Comment