package com.distantfuture.videos.services; import android.app.IntentService; import android.content.Context; import android.content.Intent; import android.os.Bundle; import com.distantfuture.videos.misc.DUtils; import java.util.HashSet; import java.util.Set; public class YouTubeService extends IntentService { private Set mHasFetchedDataMap = new HashSet<String>(); public YouTubeService() { super("YouTubeListService"); } public static void startListRequest(Context context, ListServiceRequest request, boolean refresh) { startRequest(context, request.toBundle(), refresh); } public static void startSubscriptionRequest(Context context, SubscriptionsServiceRequest request) { startRequest(context, request.toBundle(), false); } public static void startRequest(Context context, Bundle requestBundle, boolean refresh) { context = context.getApplicationContext(); Intent i = new Intent(context, YouTubeService.class); i.putExtra("request", requestBundle); i.putExtra("refresh", refresh); context.startService(i); } @Override protected void onHandleIntent(Intent intent) { try { ListServiceRequest listServiceRequest = ListServiceRequest.fromBundle(intent.getBundleExtra("request")); if (listServiceRequest != null) { boolean refresh = intent.getBooleanExtra("refresh", false); boolean hasFetchedData = mHasFetchedDataMap.contains(listServiceRequest.requestIdentifier()); mHasFetchedDataMap.add(listServiceRequest.requestIdentifier()); listServiceRequest.runTask(this, hasFetchedData, refresh); } else { SubscriptionsServiceRequest subscriptionsServiceRequest = SubscriptionsServiceRequest.fromBundle(intent.getBundleExtra("request")); if (subscriptionsServiceRequest != null) { subscriptionsServiceRequest.runTask(this); } } } catch (Exception e) { e.printStackTrace(); DUtils.log(String.format("%s exception: %s", DUtils.currentMethod(), e.getMessage())); } } }