aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/recommendation/ChannelRecord.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/tv/recommendation/ChannelRecord.java')
-rw-r--r--src/com/android/tv/recommendation/ChannelRecord.java19
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) {