diff options
Diffstat (limited to 'src/com/android/tv/recommendation/ChannelRecord.java')
-rw-r--r-- | src/com/android/tv/recommendation/ChannelRecord.java | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/com/android/tv/recommendation/ChannelRecord.java b/src/com/android/tv/recommendation/ChannelRecord.java index 26f0fbf0..c7a7cb37 100644 --- a/src/com/android/tv/recommendation/ChannelRecord.java +++ b/src/com/android/tv/recommendation/ChannelRecord.java @@ -17,14 +17,12 @@ package com.android.tv.recommendation; import android.content.Context; +import android.support.annotation.GuardedBy; import android.support.annotation.VisibleForTesting; - -import com.android.tv.TvApplication; -import com.android.tv.data.Channel; +import com.android.tv.TvSingletons; import com.android.tv.data.Program; import com.android.tv.data.ProgramDataManager; -import com.android.tv.util.Utils; - +import com.android.tv.data.api.Channel; import java.util.ArrayDeque; import java.util.Deque; @@ -32,7 +30,10 @@ public class ChannelRecord { // TODO: decide the value for max history size. @VisibleForTesting static final int MAX_HISTORY_SIZE = 100; private final Context mContext; + + @GuardedBy("this") private final Deque<WatchedProgram> mWatchHistory; + private Program mCurrentProgram; private Channel mChannel; private long mTotalWatchDurationMs; @@ -62,7 +63,7 @@ public class ChannelRecord { mInputRemoved = removed; } - public long getLastWatchEndTimeMs() { + public synchronized long getLastWatchEndTimeMs() { WatchedProgram p = mWatchHistory.peekLast(); return (p == null) ? 0 : p.getWatchEndTimeMs(); } @@ -71,7 +72,7 @@ public class ChannelRecord { long time = System.currentTimeMillis(); if (mCurrentProgram == null || mCurrentProgram.getEndTimeUtcMillis() < time) { ProgramDataManager manager = - TvApplication.getSingletons(mContext).getProgramDataManager(); + TvSingletons.getSingletons(mContext).getProgramDataManager(); mCurrentProgram = manager.getCurrentProgram(mChannel.getId()); } return mCurrentProgram; @@ -81,11 +82,11 @@ public class ChannelRecord { return mTotalWatchDurationMs; } - public final WatchedProgram[] getWatchHistory() { + public final synchronized WatchedProgram[] getWatchHistory() { return mWatchHistory.toArray(new WatchedProgram[mWatchHistory.size()]); } - public void logWatchHistory(WatchedProgram p) { + public synchronized void logWatchHistory(WatchedProgram p) { mWatchHistory.offer(p); mTotalWatchDurationMs += p.getWatchedDurationMs(); if (mWatchHistory.size() > MAX_HISTORY_SIZE) { |