package com.prateekj.snooper.infra; import android.app.Activity; import android.os.AsyncTask; public class BackgroundTaskExecutor { private Activity activity; public BackgroundTaskExecutor(Activity activity) { this.activity = activity; } public <E> void execute(final BackgroundTask<E> backgroundTask) { AsyncTask.execute(new Runnable() { @Override public void run() { E result = backgroundTask.onExecute(); sendResult(result, backgroundTask); } }); } public <E> void sendResult(final E result, final BackgroundTask<E> backgroundTask) { this.activity.runOnUiThread(new Runnable() { @Override public void run() { backgroundTask.onResult(result); } }); } }