package com.etiennelawlor.loop.fragments; import android.os.AsyncTask; import android.os.Bundle; import android.os.NetworkOnMainThreadException; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.View; import com.etiennelawlor.loop.LoopApplication; import com.squareup.leakcanary.RefWatcher; import java.util.ArrayList; import java.util.List; import retrofit2.Call; import timber.log.Timber; /** * Created by etiennelawlor on 6/13/15. */ public abstract class BaseFragment extends Fragment { // region Member Variables protected List<Call> calls; // endregion // region Lifecycle Methods @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Timber.d("onCreate()"); calls = new ArrayList<>(); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Timber.d("onViewCreated()"); } @Override public void onStop() { super.onStop(); Timber.d("onStop()"); } @Override public void onDestroyView() { super.onDestroyView(); Timber.d("onDestroyView()"); String className = this.getClass().toString(); Timber.d("onDestroyView() : className - "+ className); if(this instanceof VideosFragment){ String query = ((VideosFragment)this).getQuery(); Timber.d("onDestroyView() : query - "+ query); } Timber.d("onDestroyView() : calls.size() - " + calls.size()); for(final Call call : calls){ Timber.d("onDestroyView() : call.cancel() - "+call.toString()); try { call.cancel(); } catch (NetworkOnMainThreadException e){ Timber.d("onDestroyView() : NetworkOnMainThreadException thrown"); e.printStackTrace(); } // new CancelTask().execute(call); // OkHttpClient client = new OkHttpClient(); // client.getDispatcher().getExecutorService().execute(new Runnable() { // @Override // public void run() { // call.cancel(); // } // }); } calls.clear(); } @Override public void onDestroy() { super.onDestroy(); RefWatcher refWatcher = LoopApplication.getRefWatcher(getActivity()); refWatcher.watch(this); } // region // region Inner Classes private class CancelTask extends AsyncTask<Call, Void, Void >{ @Override protected Void doInBackground(Call... params) { Timber.d("doInBackground() : call.cancel()"); Call call = params[0]; call.cancel(); return null; } } // endregion }