package co.smartreceipts.android.analytics; import android.support.annotation.NonNull; import com.google.common.base.Preconditions; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import co.smartreceipts.android.analytics.events.Event; public class AnalyticsManager implements Analytics { private final CopyOnWriteArrayList<Analytics> mAnalyticsList; private final Executor mExecutor; public AnalyticsManager(@NonNull List<Analytics> analytics) { mAnalyticsList = new CopyOnWriteArrayList<>(Preconditions.checkNotNull(analytics)); mExecutor = Executors.newSingleThreadExecutor(); //TODO: Consider intent service } @Override public void record(@NonNull final Event event) { mExecutor.execute(new Runnable() { @Override public void run() { for (final Analytics analytics : mAnalyticsList) { analytics.record(event); } } }); } }