package org.itsnat.droid.impl.browser; import android.os.AsyncTask; /** * Created by jmarranz on 11/07/14. */ public abstract class ProcessingAsyncTask<ResOk> extends AsyncTask<Void, Void, Object> { public ProcessingAsyncTask() { } @Override protected Object doInBackground(Void... params) { try { ResOk result = executeInBackground(); return result; } catch(Exception ex) { // ex.printStackTrace(); return ex; } } @SuppressWarnings("unchecked") @Override protected void onPostExecute(Object result) { if (result instanceof Exception) onFinishError((Exception)result); else onFinishOk((ResOk)result); } @Override protected void onPreExecute() { } @Override protected void onProgressUpdate(Void... values) { } protected abstract ResOk executeInBackground() throws Exception; protected abstract void onFinishOk(ResOk result); protected abstract void onFinishError(Exception ex); }