Optimize history save

pull/605/head
jhengazuki 6 months ago
parent 50d83c1db5
commit 4021e387b2
  1. 25
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 3
      app/src/main/java/com/fongmi/android/tv/bean/History.java
  3. 25
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java

@ -759,6 +759,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void onReset(boolean replay) {
saveHistory();
mPlayers.stop();
mPlayers.clear();
mClock.setCallback(null);
@ -968,6 +969,17 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
return history;
}
private void saveHistory() {
if (mHistory == null) return;
long position = mPlayers.getPosition();
long duration = mPlayers.getDuration();
if (position >= 0 && duration > 0 && !Setting.isIncognito()) {
mHistory.setPosition(position);
mHistory.setDuration(duration);
App.execute(() -> mHistory.merge().save());
}
}
private void updateHistory(Episode item, boolean replay) {
replay = replay || !item.equals(mHistory.getEpisode());
mHistory.setEpisodeUrl(item.getUrl());
@ -1022,10 +1034,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
@Override
public void onTimeChanged() {
long position, duration;
mHistory.setPosition(position = mPlayers.getPosition());
mHistory.setDuration(duration = mPlayers.getDuration());
if (position >= 0 && duration > 0 && !Setting.isIncognito()) App.execute(() -> mHistory.save());
long position = mPlayers.getPosition();
long duration = mPlayers.getDuration();
if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + position >= duration) {
checkEnded(false);
}
@ -1075,7 +1085,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
break;
case PlayerEvent.TRACK:
setMetadata();
mergeHistory();
setTrackVisible();
mClock.setCallback(this);
break;
@ -1098,11 +1107,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
}
private void mergeHistory() {
mHistory.setDuration(mPlayers.getDuration());
App.execute(() -> mHistory.merge());
}
private void setTrackVisible() {
mBinding.control.text.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_TEXT) || mPlayers.isVod() ? View.VISIBLE : View.GONE);
mBinding.control.audio.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
@ -1409,6 +1413,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
protected void onPause() {
super.onPause();
if (isRedirect()) onPaused();
saveHistory();
}
@Override

@ -284,8 +284,9 @@ public class History implements Diffable<History> {
return this;
}
public void merge() {
public History merge() {
merge(false);
return this;
}
private History merge(boolean force) {

@ -793,6 +793,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void onReset(boolean replay) {
saveHistory();
mPlayers.stop();
mPlayers.clear();
mClock.setCallback(null);
@ -1048,6 +1049,17 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
return history;
}
private void saveHistory() {
if (mHistory == null) return;
long position = mPlayers.getPosition();
long duration = mPlayers.getDuration();
if (position >= 0 && duration > 0 && !Setting.isIncognito()) {
mHistory.setPosition(position);
mHistory.setDuration(duration);
App.execute(() -> mHistory.merge().save());
}
}
private void updateHistory(Episode item, boolean replay) {
replay = replay || !item.equals(mHistory.getEpisode());
mHistory.setEpisodeUrl(item.getUrl());
@ -1118,10 +1130,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
@Override
public void onTimeChanged() {
long position, duration;
mHistory.setPosition(position = mPlayers.getPosition());
mHistory.setDuration(duration = mPlayers.getDuration());
if (position >= 0 && duration > 0 && !Setting.isIncognito()) App.execute(() -> mHistory.save());
long position = mPlayers.getPosition();
long duration = mPlayers.getDuration();
if (mHistory.getEnding() > 0 && duration > 0 && mHistory.getEnding() + position >= duration) {
checkEnded(false);
}
@ -1184,7 +1194,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
break;
case PlayerEvent.TRACK:
setMetadata();
mergeHistory();
setTrackVisible();
mClock.setCallback(this);
break;
@ -1235,11 +1244,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
}
private void mergeHistory() {
mHistory.setDuration(mPlayers.getDuration());
App.execute(() -> mHistory.merge());
}
private void setTrackVisible() {
mBinding.control.action.text.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_TEXT) || mPlayers.isVod() ? View.VISIBLE : View.GONE);
mBinding.control.action.audio.setVisibility(mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
@ -1652,6 +1656,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
protected void onPause() {
super.onPause();
if (isRedirect()) onPaused();
saveHistory();
}
@Override

Loading…
Cancel
Save