如何解决服务时间测量
我有一项服务,它使用 MediaSession
来播放流。我想收集时间,这个服务播放多少音乐,然后将其发送到服务器。我使用以下代码(简化):
public class MyService extends MediabrowserServiceCompat {
private Long startTime;
public class MediaPlayerListener extends PlaybackInfoListener {
@Override
public void onPlaybackStateChange(PlaybackStateCompat state) {
session.setPlaybackState(state);
switch (state.getState()) {
case PlaybackStateCompat.STATE_PLAYING:
startTime = SystemClock.elapsedRealtime();
startForeground(Medianotificationmanager.NOTIFICATION_ID,notification);
break;
case PlaybackStateCompat.STATE_STOPPED:
long timediff = SystemClock.elapsedRealtime() - startTime;
stopForeground(true);
stopSelf();
// timediff is being sent to the server here
break;
}
}
}
服务按预期工作,但时间报告没有。在服务器上,有的听的时间还可以,但有的真的很大,200多个小时。由于此服务用于收听流,因此计算此类值是不可能或不现实的。因此,我确信这种报道是不好的。我也尝试将 SystemClock
替换为 System#currentTimeMillis
,但值也非常大。有人可以告诉我,如何正确衡量收听时间或为我提供一些最佳实践吗?
解决方法
在调用 stopSelf() 之前尝试向服务器发送时差。 有时它可能没有足够的时间发送它。 stopSelf() 尽快停止服务。另一个处理发送时差的服务?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。