/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * * @author sihai * */ public class ImageLoadingMetrics { private static boolean sImageLoadingMetricsEnabled = false; public static List<ImageRequestMetrics> sMetrics; public static Map<String, ImageRequestMetrics> sMetricsMap; public static boolean areImageLoadingMetricsEnabled() { return false; } private static synchronized ImageRequestMetrics getRequestMetrics(String url) { if(sMetricsMap == null) { sMetrics = new ArrayList<ImageRequestMetrics>(); sMetricsMap = new HashMap<String, ImageRequestMetrics>(); } ImageRequestMetrics imagerequestmetrics = sMetricsMap.get(url); if(imagerequestmetrics == null) { imagerequestmetrics = new ImageRequestMetrics(); imagerequestmetrics.url = url; sMetrics.add(imagerequestmetrics); sMetricsMap.put(url, imagerequestmetrics); } return imagerequestmetrics; } public static void recordImageDelivered(String url, int compressedByteCount, int uncompressedByteCount) { ImageRequestMetrics imagerequestmetrics = getRequestMetrics(url); if(imagerequestmetrics.deliveredTimestamp == 0L) { imagerequestmetrics.deliveredTimestamp = System.currentTimeMillis(); imagerequestmetrics.compressedByteCount = compressedByteCount; imagerequestmetrics.uncompressedByteCount = uncompressedByteCount; } } public static void recordImageDownloadFinished(String url) { getRequestMetrics(url).downloadFinishedTimestamp = System.currentTimeMillis(); } public static void recordImageDownloadQueued(String url) { getRequestMetrics(url).downloadQueuedTimestamp = System.currentTimeMillis(); } public static void recordImageDownloadStarted(String url) { getRequestMetrics(url).downloadStartedTimestamp = System.currentTimeMillis(); } public static synchronized void recordLoadImageRequest(String url) { ImageRequestMetrics imagerequestmetrics = getRequestMetrics(url); if(imagerequestmetrics.downloadFinishedTimestamp != 0L && System.currentTimeMillis() - imagerequestmetrics.downloadFinishedTimestamp > 1000L) { sMetricsMap.remove(url); imagerequestmetrics = getRequestMetrics(url); } imagerequestmetrics.requestCount = 1 + imagerequestmetrics.requestCount; if(imagerequestmetrics.requestTimestamp == 0L) imagerequestmetrics.requestTimestamp = System.currentTimeMillis(); } public static final class ImageRequestMetrics { public int compressedByteCount; public long deliveredTimestamp; public long downloadFinishedTimestamp; public long downloadQueuedTimestamp; public long downloadStartedTimestamp; public int requestCount; public long requestTimestamp; public int uncompressedByteCount; public String url; public ImageRequestMetrics() { } } }