package com.jackpf.apkdownloader; import java.util.HashMap; import android.content.Context; import android.os.AsyncTask; import com.jackpf.apkdownloader.Model.RequestInterface; import com.jackpf.apkdownloader.Model.UIInterface; /** * Network thread * Performs all api requests */ public class NetworkThread extends AsyncTask<Object, Void, Void> { /** * Context called from */ // Not really needed //private Context context; /** * Api request to call */ private RequestInterface request; /** * UI to pass data to */ private UIInterface ui; /** * UI vars */ HashMap<String, Object> vars = new HashMap<String, Object>(); /** * Exception caused in the network thread */ Exception e = null; /** * Constructor * * @param context * @param request * @param ui */ public NetworkThread(Context context, RequestInterface request, UIInterface ui) { //this.context = context; this.request = request; this.ui = ui; } /** * Thread pre execute * Just call the UI's preExecute method */ @Override protected void onPreExecute() { ui.preUpdate(); } /** * Perform request * * @param params */ @Override protected Void doInBackground(Object... params) { try { // Just set the vars to the response vars = request.call(params); } catch (Exception e) { e.printStackTrace(); this.e = e; } return null; } /** * Post execute * Pass vars to UI * * @param _void */ @Override protected void onPostExecute(Void _void) { ui.setVars(vars); if (e == null) { ui.update(); } else { ui.error(e); } } }